Kann man so etwas machen?
$ sqlplus -s user/pass "select 1 from dual"
oder$ echo "select 1 from dual" | sqlplus -s user/pass
Ich weiß, ich kann select 1 from dual
in einer Datei und mache das:$ sqlplus -s user/pass @myFile.sql
aber ich frage mich, ob es tatsächlich notwendig ist, eine Datei zu erstellen, nur um sqlplus zufrieden zu stellen
Beachten Sie jedoch, dass Ihr Benutzername/Passwort unter Unix/Linux von jedem gesehen werden kann, der den Befehl "ps -ef" ausführen kann, wenn Sie ihn direkt in die Befehlszeile eingeben. Könnte ein großes Sicherheitsproblem sein (oder sich in ein großes Sicherheitsproblem verwandeln).
Normalerweise empfehle ich, eine Datei zu erstellen oder dieses Dokument zu verwenden, um zu verhindern, dass der Benutzername/das Kennwort unter Unix/Linux mit dem Befehl "ps -ef" angezeigt wird. Wenn der Benutzername/das Kennwort in einer Skriptdatei oder einer SQL-Datei enthalten ist, können Sie sie mit den entsprechenden Benutzer-/Gruppenleseberechtigungen schützen. Dann können Sie den Benutzer/pass in der Datei wie folgt in einem Shell-Skript belassen:
sqlplus -s /nolog <<EOF
connect user/pass
select blah;
quit
EOF
Ich kann Ihre genaue Abfrage ausführen, indem ich nur darauf achte, dass am Ende meiner select-Anweisung ein Semikolon steht. (Ausgabe ist aktuell, Verbindungsparameter entfernt.)
echo "select 1 from dual;" | sqlplus -s username/[email protected]:1521/service
Ausgabe:
1
----------
1
Beachten Sie, dass dies von Bedeutung sein sollte, dies jedoch unter Mac OS X Snow Leopard und Oracle 11g ausgeführt wird.
Meine Version
$ sqlplus -s username/[email protected]:port/service <<< "select 1 from dual;"
1
----------
1
BEARBEITEN:
Für mehrzeilige können Sie dies verwenden
$ echo -e "select 1 from dual; \n select 2 from dual;" | sqlplus -s username/[email protected]:port/service
1
----------
1
2
----------
2
Ich nehme an das ist * nix?
Verwenden Sie "hier Dokument":
sqlplus -s user/pass <<+EOF
select 1 from dual;
+EOF
EDIT: Ich hätte dein zweites Beispiel versuchen sollen. Es funktioniert auch (auch unter Windows ohne Ticks):
$ echo 'select 1 from dual;'|sqlplus -s user/pw
1
----------
1
$