1.动态SQL格式1
EXECUTE IMMEDIATE SQLStatement {USING TransactionObject} ;
例如:
字符串 Mysql
Mysql =“创建表员工”&
"(emp_id 整数不为空,"&
“dept_id 整数不为空,”&
“emp_fname char(10) 不为空,”&
“emp_lname char(20) 不为空)”
立即执行:Mysql ;
2.动态SQL格式2
从 SQLStatement {USING TransactionObject} 准备 DynamicStagingArea ;
使用 {ParameterList} 执行 DynamicStagingArea ;
例如:
INT Emp_id_var = 56
准备 SQLSA
FROM“从员工中删除 emp_id=?” ;
使用 :Emp_id_var ;
执行 SQLSA
3.动态SQL格式3
声明光标|程序动态光标| DynamicStagingArea 的程序;
从 SQLStatement {USING TransactionObject} 准备 DynamicStagingArea ;
打开动态光标 {使用参数列表} ;
执行动态过程 {使用参数列表} ;
获取光标|过程 INTO HostVariableList ;
关闭光标|程序;
例如:
整数 Emp_id_var
声明 my_cursor 动态游标用于 SQLSA ;
从“从员工中选择 emp_id”准备 SQLSA ;
打开动态 my_cursor ;
FETCH my_cursor INTO :Emp_id_var ;
关闭 my_cursor ;
4.动态SQL格式4
声明光标|程序动态光标| DynamicStagingArea 的程序;
从 SQLStatement {USING TransactionObject} 准备 DynamicStagingArea ;
DESCRIBE DynamicStagingArea INTO DynamicDescriptionArea ;
打开动态光标|过程使用 DESCRIPTOR DynamicDescriptionArea ;
执行动态光标|过程使用 DESCRIPTOR DynamicDescriptionArea ;
获取光标|过程使用 DESCRIPTOR DynamicDescriptionArea ;
关闭光标|程序;
例如:
字符串 Stringvar, Sqlstatement
整数 Intvar
Sqlstatement = "从员工中选择 emp_id"
从 :Sqlstatement ;
准备 SQLSA
将 SQLSA 描述为 SQLDA ;
声明 my_cursor 动态游标用于 SQLSA ;
使用描述符 SQLDA 打开动态 my_cursor ;
使用描述符 SQLDA 获取 my_cursor ;
// 如果FETCH成功,则输出
// 描述符数组将包含返回的
// 结果集第一行的值。
// SQLDA.NumOutputs 包含
的数量
// 输出描述符。
// SQLDA.OutParmType 数组将包含
// NumOutput 条目,每个条目将包含
// 枚举数据类型 ParmType
的值
// (例如 TypeInteger!或 TypeString!)。
选择案例 SQLDA.OutParmType[1]
CASE 类型字符串!
Stringvar = GetDynamicString(SQLDA, 1)
CASE 类型Integer!
Intvar = GetDynamicNumber(SQLDA, 1)
结束选择
关闭 my_cursor ;