PB下的SQL语句

SQL语句以";"结束,可写成多行形式而不用"&"
1、SELECT
注意:变量前加“:”,如例子程序:
SELECT Employee.Emp_id,Employee.Emp_name,
Employee.Emp_salary,Dept.Dept_name
FROM Employee,Dept
WHERE (Emp_name like '张%')AND (Emp_sex='男')
AND Employee.Dept_id=Dept.Dept_id
ORDER BY Employee.Emp_id;
给变量的例子:
Dec Emp_salary
SELECT max(Emp_salary)
INTO :Emp_salary
FROM Employee;
2、INSERT
Int Emp_nbr
String Emp_name
Emp_nbr=Integer(sle_number.Text)
Emp_name=sle_name.Text
INSERT INTO Employee(employee.Emp_nbr,employee.Emp_name)
 VALUES(:Emp_nbr,:Emp_name)
USING Emp_tran;
3、UPDATE
一个例子:
UPDATE Employee//表名
SET emp_name=:sle_Name.Text //修改
WHERE Employee.emp_nbr=:Emp_nbr;//修改条件
4、DELETE
DELETE FROM Employee //从表Employee
WHERE Emp_nbr <100;删除条件满足的记录
5、CONNECT和DISCONNECT
执行DISCONNECT前自动执行COMMIT
6、COMMIT和ROLLBACK
7、使用游标(用来保存多条记录操作)
DECLARE,OPEN,FECTH...INTO...:NAME,CLOSE,DELETE(删除游标指向的记录),UPDATE(修改游标指向的记录)
利用游标打开多个记录的例子
//声明powerscript变量,存放读出的雇员姓名
String emp_cur CURSOR FOR
 SELECT emp_name FROM EMPLOYEE
 WHERE emp_state=:sle_1.text;
//打开游标,执行SELECT语句
OPEN emp_cur;
//从结果集中取第一条记录
FETCH emp_cur INTO "emp_name_var;
//判断FETCH语句执行情况
IF SQLCA.SQLCode<0 THEN
 MessageBox("Datebase Error",&//显示错误信息
 SQLCA.SQLErrText,Exclamation!)
RETURN
END IF
//如果FETCH语句执行正确,用循环语句逐条取结果集中的记录,到取完
DO WHILE SQLCA.SQLCode=0 //是否取完数据
//把取出的雇员姓名加入下拉列表框中
dlbl_1.additem(emp_name_var)
//继续从结果集中取下一符合条件的数据
FETCH emp_cur INTO :emp_name_var;
LOOP
//关闭游标
CLOSE emp_cur;
8、处理BLOB型数据(大部分语句只能对一条记录进行操作,多余则出错)
SELECTBLOB:
//声明BLOB型变量Emp_id_pic,用语存放Emp_pic列的数据
Blob Emp_pic
SELECTBLOB Emp_pic
 INTO :Emp_id_pic
 FROM Employee
 WHERE Employee.Emp_Id="001"
 USING Emp_tran;
//如果执行正确,在pb_1中显示照片
IF Emp_tran.SQLCode=0 THEN
pb1.SetPicture(Emp_id_pic)
END IF

UPDATEBLOB:
Integer fh
Blob Emp_id_pic
//以读方式打开一个流模式文件
fh=FileOpen("c:/emp_100.bmp",StreamMode!)
//判断打开文件是否成功
IF fh<>-1 THEN
//从文件中读取图形数据存于Blob型变量
 FileRead(fh,emp_id_pic)
//关闭文件
 FileClose(fh)
//修改表的emp_pic列
UPDATEBLOB Employee
SET emp_pic=:Emp_id_pic
 WHERE EMp-Id="001";
END IF
IF SQLCA.SQLNRows>0 THEN//判断是否返回结果
 COMMIT;/提交事务
ELSE
ROLLBACK;//回滚事务
END IF

9、动态SQL语句
事务对象,动态描述区(SQLSA),动态描述区(SQLCA)
示例1:
String Mysql
Mysql ="CREAT TABLE Employee"&
 +"(emp_id char(6)not null,"&
 +"emp_hbr integer not null,"&
 +"dept_id integer not null,"&
 +"emp_fname char(10) not null,"&
 +"emp_lname char(20) not null)"
EXCUTE IMMEDIATE :Mysql;
实例2:
EXCUTE IMMEDIATE "DROP TABLE Employee" USING My_trans;
等价于:
String Mysql
Mysql+"DROP TABLE Employee"
EXCUTE IMMEDIATE :Mysql USING My_trans
实例3:
//在表中插入记录
Int Dept_id_var=156
String Dept_name_var
SetNull(Dept_name_var)
CONNECT;//
PREPARE SQLCA //prepare的作用???
 FROM "INSERT INTO dept VALUES(dept_id,dept_name)";
EXCUTE SQLCA USING :Dept_id_var,:Dept_name_var;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值