適用対象
説明
SELECT以外のSQL文またはPL/SQLブロックを1つ実行します。
使用方法
rowcount = oradatabase.ExecuteSQL(sql_statement) rowcount = oradatabase.DbExecuteSQL(sql_statement)
引数
このメソッドの引数は、次のとおりです。
| 引数 | 説明 |
|---|---|
sql_statement |
SELECT以外の有効なOracle SQL文。 |
備考
SQL文を実行し、その文で処理された行数を戻します。
sql_statement引数は、ブレークのない連続する1行として指定できます。行をブレークする必要がある場合は、改行(ASCII 10)を使用します。キャリッジ・リターン(ASCII 13)は、基礎となるOracle DatabaseファンクションがNULL終端文字として取り扱うため、使用しないでください。
SQL文を実行すると、データベースに対するコミットがデフォルトで生成されます。これを回避するには、ExecuteSQLメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。
PL/SQLのバインド変数は、OraParametersと組み合せて使用できます。
PL/SQLブロックの実行時またはストアド・プロシージャのコール時は、PL/SQLの無名ブロックを実行する場合のように、コールの前後にBEGIN文とEND文を付ける必要があります。これは、SQL*PlusおよびSQL*DBAのEXECUTEコマンドと同じです。
|
注意: 実行するSQL文またはPL/SQLブロックが、現在オープンしているダイナセットに悪影響を与える可能性があるため、ExecuteSQLメソッドの使用には注意が必要です。ExecuteSQLメソッドに使用するOraDatabaseオブジェクトが、ダイナセットを作成するために使用されたオブジェクトと同一の場合は、特に注意してください。不確実な場合は、異なるOraDatabaseオブジェクトを使用してください。 |
トランザクション・モードでデータベースのコミットが発行された場合は、通常のダイナセット操作が悪影響を受ける可能性があります。これは、SQLのコミット文、データ制御言語(DCL)またはデータ定義言語(DDL)コマンドが発行された場合に発生する可能性があります。CREATE、DROP、ALTER、GRANTおよびREVOKEなど、DCLとDDLのSQLコマンドは、常にコミットを強制し、コマンド以前に実行された内容をすべてコミットします。DCL、DDLおよびトランザクションの詳細は『Oracle Database SQL言語リファレンス』を参照してください。
データ型
Long Integer
例
例: ExecuteSQL
この例では、AddおよびRemoveパラメータ・メソッド、ServerTypeパラメータ・プロパティ、およびストアド・プロシージャGetEmpNameとストアド・ファンクションGetSalをコールするExecuteSQLデータベース・メソッドを使用します。例を実行する前に、ORAEXAMP.SQLファイルを実行して、GetEmpNameとGetSal、およびその他の必要なオブジェクト型とLOBをOracle Databaseに作成してください。次に、このOO4Oコード例をコピーして、フォームの定義セクションに貼り付け、プログラムを実行します。
Sub Form_Load ()
'Declare variables
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDatabase
'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
'Create the OraDatabase Object.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)
'Add EMPNO as an Input/Output parameter and set its initial value.
OraDatabase.Parameters.Add "EMPNO", 7369, ORAPARM_INPUT
OraDatabase.Parameters("EMPNO").ServerType = ORATYPE_NUMBER
'Add ENAME as an Output parameter and set its initial value.
OraDatabase.Parameters.Add "ENAME", 0, ORAPARM_OUTPUT
OraDatabase.Parameters("ENAME").ServerType = ORATYPE_VARCHAR2
'Add SAL as an Output parameter and set its initial value.
OraDatabase.Parameters.Add "SAL", 0, ORAPARM_OUTPUT
OraDatabase.Parameters("SAL").ServerType = ORATYPE_NUMBER
'Execute the Stored Procedure Employee.GetEmpName to retrieve ENAME.
' This Stored Procedure can be found in the file ORAEXAMP.SQL.
OraDatabase.ExecuteSQL ("Begin Employee.GetEmpName (:EMPNO, :ENAME); end;")
'Display the employee number and name.
'Execute the Stored Function Employee.GetSal to retrieve SAL.
' This Stored Function can be found in the file ORAEXAMP.SQL.
OraDatabase.ExecuteSQL ("declare SAL number(7,2); Begin" & _
":SAL:=Employee.GetEmpSal (:EMPNO); end;")
'Display the employee name, number and salary.
MsgBox "Employee " & OraDatabase.Parameters("ENAME").value & ", #" & _
OraDatabase.Parameters("EMPNO").value & ",Salary=" & _
OraDatabase.Parameters("SAL").value
'Remove the Parameters.
OraDatabase.Parameters.Remove "EMPNO"
OraDatabase.Parameters.Remove "ENAME"
OraDatabase.Parameters.Remove "SAL"
End Sub