適用対象
説明
SQL文を実行し、指定したSQL文とオプションからOraSQLStmtオブジェクトを作成します。
使用方法
Set orasqlstmt = oradatabase.CreateSQL(sql_statement, options)
引数
このメソッドの引数は、次のとおりです。
| 引数 | 説明 |
|---|---|
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の使用には注意が必要です。 |
データ型
String
例
この例では、パラメータ、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