PB下的SQL語句

2021-04-01 17:31:45 字數 3742 閱讀 1777

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_***='男')

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語句

轉截自 原文解釋的比較詳細 本文只做以後用到的時候方便查詢 第一種 這種型別的動態sql語句經常用來執行ddl或者資料庫專用的其他sql語句。語法格式是 execute immediate sqlstatement 其中sqlstatement是個字串,其內容是有效的sql語句 transactio...

PB動態SQL語句執行應用

decimal c value integer li returns datetime ldt date string ls date ldt date adt date string ls sqlstring ls sqlstring select isnull colname 0 from se...

pb 判斷sql 是否合法 檢查SQL語句是否合法

昨天又有乙個新的需求 驗證文字框輸入的sql語法是否正確。首先需要知道 set parseonly 當 set parseonly 為 on 時,sql server 只分析語句。當 set parseonly為 off 時,sql server 編譯並執行語句。和 set parseonly 相關...