ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CreateSQLメソッド

説明

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

関連項目: