程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Powerbuilder中常用SQL語句實例

Powerbuilder中常用SQL語句實例

編輯:關於SqlServer

任何對sql類數據庫操作的語言必學的:),下面的是PB版本,有一些PB的特性.

SQL語句

sql語句以;結束,可寫成多行形式而不用&

1SELECT

注意:變量前加:

一個例子:

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;

 

 

2INSERT

一個例子:

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;

 

3UPDATE

一個例子:

UPDATE Employee//表名

SET emp_name=:sle_Name.Text //修改

 WHERE Employee.emp_nbr=:Emp_nbr;//修改條件

 

4DELETE

一個例子:

DELETE FROM Employee //從表Employee

 WHERE Emp_nbr <100;刪除條件滿足的記錄

5CONNECTDISCONNECT

執行DISCONNECT前自動執行COMMIT

6COMMITROLLBACK

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(?,?)";

EXCUTE SQLCA USING :Dept_id_var,:Dept_name_var

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved