Executes the SQL statement and creates an OraSQLStmt object from the specified SQL statement and options.
The arguments for the method are:
| Arguments | Description |
|---|---|
sql_statement |
Any valid Oracle SQL statement. |
options |
A bit flag indicating the status of any optional states of the OraSQLStmt object. You can combine one or more options by adding their respective values. |
The options flag values are:
| Constant | Value | Description |
|---|---|---|
ORASQL_NO_AUTOBIND |
&H1& |
Do not perform automatic binding of database parameters. |
ORASQL_FAILEXEC |
&H2& |
Raise error and do not create SQL statement object. |
ORASQL_NONBLK |
&H4& |
Execute SQL in a nonblocking state. |
These values can be found in the oraconst.txt file.
The SQL statement can be one continuous line with no breaks. If it is necessary to break the line, be sure to use line feeds (ASCII 10). Do not use carriage returns (ASCII 13), because the underlying Oracle Database functions treat carriage returns as null terminators.
You can use PL/SQL bind variables in conjunction with the OraParameters collection.
Executing the SQL statement generates a commit to the database by default. To avoid this, use the BeginTrans method on the session object before using the CreateSQL method.
When executing PL/SQL blocks or calling stored procedures, you must include a BEGIN and END statement around your call as if you were executing an anonymous PL/SQL block. This is equivalent to the EXECUTE command of SQL*Plus and SQL*DBA.
If the ORASQL_FAILEXEC option is used, an error is raised during SQLstmt object creation failure (on SQLstmt object refresh). The SQLstmt object is not created and cannot be refreshed.
Note:
Use theCreateSQL method with care, because any SQL statement or PL/SQL block that is executed might cause errors afterward when you use the Edit method on open dynasets.This example demonstrates the use of parameters, the CreateSQL method, the Refresh method, and the SQL property for OraSQLStmt object. Copy and paste this code into the definition section of a form. Then, press 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
See Also:
"Asynchronous Processing" for more information about the ORASQL_NONBLK option