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; |
|
PB下的SQL语句
最新推荐文章于 2016-09-11 23:16:06 发布