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 相關...