引数
このメソッドの引数は、次のとおりです。
引数 | 説明 |
---|---|
sql_statement |
有効なOracle SQL文。 |
options |
OraSQLStmt のオプション状態を示すビット・フラグ。それぞれの値を追加することで1つ以上のオプションを組み合せることができます。 |
定数
オプション・フラグの値は、次のとおりです。
定数 | 値 | 説明 |
---|---|---|
ORASQL_NO_AUTOBIND |
&H1& |
データベース・パラメータの自動的なバインドを実行しない。 |
ORASQL_FAILEXEC |
&H2& |
エラーを発生させ、SQL文オブジェクトを作成しない。 |
ORASQL_NONBLK |
&H4& |
SQLを非ブロック状態で実行する。 |
これらの値は、oraconst.txt
ファイルにあります。
備考
SQL文は、ブレークのない連続する1行として指定できます。行をブレークする必要がある場合は、改行(ASCII 10)を使用します。キャリッジ・リターン(ASCII 13)は、基礎となるOracle DatabaseファンクションがNULL終端文字として取り扱うため、使用しないでください。
PL/SQLのバインド変数は、OraParameters
と組み合せて使用できます。
SQL文を実行すると、データベースに対するコミットがデフォルトで生成されます。これを回避するには、CreateSQL
メソッドの使用前に、セッション・オブジェクトにBeginTrans
メソッドを使用します。
PL/SQLブロックの実行時またはストアド・プロシージャのコール時は、PL/SQLの無名ブロックを実行する場合のように、コールの前後にBEGIN
文とEND
文を付ける必要があります。これは、SQL*PlusおよびSQL*DBAのEXECUTE
コマンドと同じです。
ORASQL_FAILEXEC
オプションを使用すると、SQLstmt
オブジェクトの作成に失敗したとき(SQLstmt
オブジェクトのリフレッシュ時)に、エラーが発生します。SQLstmt
オブジェクトは作成されず、リフレッシュもできません。
注意: 実行するSQL文またはPL/SQLブロックは、後で、オープンしているダイナセットでEdit メソッドを使用したときにエラーを発生させる可能性があるため、CreateSQL の使用には注意が必要です。 |
例
この例では、パラメータ、CreateSQL
メソッド、Refresh
メソッド、およびOraSQLStmt
オブジェクトのSQLプロパティの使用方法を示します。このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[F5]を押します。
Sub Form_Load () 'Declare variables Dim OraSession As OraSession Dim OraDatabase As OraDatabase Dim OraSqlStmt As OraSQLStmt 'Create the OraSession Object. Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'Create the OraDatabase Object by opening a connection to Oracle. Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&) OraDatabase.Parameters.Add "EMPNO", 7369, 1 OraDatabase.Parameters("EMPNO").ServerType = 2 'ORATYPE_NUMBER OraDatabase.Parameters.Add "ENAME", 0, 2 OraDatabase.Parameters("ENAME").ServerType = 1 'ORATYPE_VARCHAR2 Set OraSqlStmt = OraDatabase.CreateSQL("Begin Employee.GetEmpName" & _ "(:EMPNO, :ENAME); end;", 0&) 'Notice that the SQL statement is NOT modified. MsgBox OraSqlStmt.SQL 'Should display SMITH MsgBox OraDatabase.Parameters("ENAME").Value 'Change the value of the empno parameter. OraDatabase.Parameters("EMPNO").Value = 7499 'Refresh the sqlstmt OraSqlStmt.Refresh 'Should display ALLEN MsgBox OraDatabase.Parameters("ENAME").Value 'Notice that the SQL statement is NOT modified. MsgBox OraSqlStmt.SQL 'Remove the parameter. OraDatabase.Parameters.Remove ("job") End Sub