使用方法
rowcount = oradatabase.ExecuteSQL(sql_statement) rowcount = oradatabase.DbExecuteSQL(sql_statement)
備考
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言語リファレンス』を参照してください。
例
例: 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