pb中动态sql的使用
来源:互联网 发布:usb转ttl怎么接单片机 编辑:程序博客网 时间:2024/05/16 03:14
PB提供了四种不同的动态sql方式,每种格式都有不同的特点和作用。
A、无输入参数且无返回结果集,如:建表(CREATE TABLE)、修改表(ALTER TABLE)、插入(INSERT )等等。
语法:EXECUTE IMMEDIATE SQLStatement{USING TransactionObject};
SQLStatement: sql语句
TransactionObject:事物对象(SQLCA)
例子:
String ls_sql = "INSERT INTO T_TEST VALUES(1,'张三') INSERT INTO T_TEST VALUES(2,'张三') "+&
"INSERT INTO T_TEST VALUES(3,'张三') INSERT INTO T_TEST VALUES(4,'李四') "+&
"INSERT INTO T_TEST VALUES(5,'李四') INSERT INTO T_TEST VALUES(6,'李四') "
CONNECT USING SQLCA;
EXECUTE IMMEDIATE 'if exists (select * from sysobjects where id = object_id(N~'[dbo].[T_TEST]~') and OBJECTPROPERTY(id, N~'IsUserTable~') = 1) drop table [dbo].[T_TEST] CREATE TABLE T_TEST(ID int,NAME varchar(50))' USING SQLCA;
EXECUTE IMMEDIATE :ls_sql USING SQLCA;
DISCONNECT USING SQLCA;
B、有输入参数但无返回结果集,如:删除(DELETE)
语法:PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject};
EXECUTE DynamicstagingArea{USING Parameterlist};
DynamicstagingArea是PB提供的一种数据类型,一般可用SQLSA这个全局变量
例子:Int li_id = 1
String ls_name = "张三"
CONNECT USING SQLCA;
PREPARE SQLSA FROM 'DELETE FROM T_TEST WHERE ID=? AND name =?';
EXECUTE SQLSA USING :li_id,:ls_name;
DISCONNECT USING SQLCA;
C、有输入参数且有返回结果集并且能确定结果集,此方式用游标实现
语法:DECLARE cursor DYNAMIC CURSOR FOR DynamicStagingArea;
PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject};
OPEN DYNAMIC cursor {USING Parameterlist};
FETCH cursor INTO VariableList;
DO WHILE SQLCA.SQLCODE=0
//循环处理数据
FETCH cursor INTO VariableList;
LOOP
CLOSE cursor;
cursor:是用户所定义的游标的名字。
DynamicStagingArea:用默认全局变量SQLSA。
SQLStatement为sql语句
例子:
INT li_id,li_idd
String ls_sql,ls_name
ls_sql = "select id,name from t_test where name =?"
ls_name = "李四"
CONNECT USING SQLCA;
DECLARE cur DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :ls_sql USING SQLCA;
OPEN DYNAMIC cur USING :ls_name;
FETCH cur INTO :li_id,:ls_name;
//添加处理
DO WHILE SQLCA.SQLCode =0
if li_id=5 then
update t_test
set name = '王五'
where id=:li_id;
end if
FETCH cur INTO :li_id,:ls_name;
LOOP
CLOSE cur;
DISCONNECT USING SQLCA;
第四种用的比较少,懒写的了
- pb中动态sql的使用
- PB中动态SQL处理BLOB的方式
- 在PB中动态修改SQL语句
- PB动态SQL语句
- 【PB】动态SQL语句
- 【PB】动态SQL语句
- PB动态SQL语句
- PB动态SQL语句
- PB动态SQL
- 【PB】在PB中嵌入式sql语句"in"的用法
- 在PB中动态修改数据窗口DW的SQL语句方法注意事项
- PL/SQL中动态SQL的使用
- PB调用动态SQL语句
- 【PB】在PB中动态调用函数
- 【PB】使用参数指定的SQL语句向指定的下拉列表框中添加数据
- pb 的动态游标
- Delphi中使用动态SQL的几个问题
- PLSQL中动态sql的使用
- 将PDF转化为图片
- 毕业季—随想
- vs2008给子对话框添加初始化函数OnInitDialog()函数
- 对话框样式的activity
- JXL应用-解析excel工具包
- pb中动态sql的使用
- MQ put encoding
- CodeIgniter 学习笔记
- Copy and Paste to OneNote
- 多列索引
- hibernate中lazy的使用
- Unable to load configuration"异常处理
- 无意义的小东西
- hoj Printer Queue