PythonからSQLコマンドをうまく渡すことができますが、それをSETと組み合わせることができないようです-ヘッダーが必要ないので、SET HEADING OFFを試しています。
私がどこに行くのかを示す4つの試みがあります:
1 - 日付だけでなく、エラー メッセージも取得します。
session = Popen(['sqlplus','-S','user/pass@ORCL'], stdin=PIPE, stdout=PIPE, stderr=PIPE) sqlCommand = "SET HEADING OFF \n / \n select sysdate from dual;" session.communicate(sqlCommand) ('SP2-0103: Nothing in SQL buffer to run.\r\n\r\n09-JUL-13\r\n\r\n', '')
2 - SET なしのコマンド:
session = Popen(['sqlplus','-S','user/pass@ORCL'], stdin=PIPE, stdout=PIPE, stderr=PIPE) sqlCommand = "select sysdate from dual;" session.communicate(sqlCommand) ('\r\nSYSDATE\r\n---------\r\n09-JUL-13\r\n\r\n', '')
3 - ワンライナーを試しました:
session = Popen(['sqlplus','-S','user/pass@ORCL'], stdin=PIPE, stdout=PIPE, stderr=PIPE) sqlCommand = "set heading off \select sysdate from dual;" session.communicate(sqlCommand) ('SP2-0158: unknown SET option "\\select"\r\n', '')
4 - 2 つの呼び出しに分けようとしました:
session = Popen(['sqlplus','-S','user/pass@ORCL'], stdin=PIPE, stdout=PIPE, stderr=PIPE) sqlCommand = "select sysdate from dual;" session.stdin.write('SET HEADING OFF') session.communicate(sqlCommand) ('SP2-0265: heading must be set ON or OFF\r\n', '')
最後に、これが値を取得する最も簡単な方法ではない場合 (それが私の目標であり、値を 1 つ返すだけです。これは最終的なクエリではありません)、お知らせください。どんなアドバイスでも大歓迎です!