1.在建立儲存過程時,必須要有比較好的編輯工具,否則iq會幫你把儲存過程優化得面目全非:比如連續的賦值語句
select @a1 = 'a1'
select @a2 = 'a2'
select @a3 = a1 + a2
想想結果是'a1a2',但是它會幫你優化為select @a1 = 'a1' ,@a2 = 'a2',@a3 = a1 + a2 ,根據從右到左的原則最後的@a3 為空,見鬼吧!當然避免這種情況的方式是將每句話用begin .. end包起來,但是這絕對麻煩。
2.iq對引號有自己的理解方式,當你將開關quoted_identifier開啟時會發現用""包起來的它都認為是列名而不是字串常量。所以一般引號中套引號只能是'asdasd''yh''sadasdasd'這種方式
動態sql的侷限性:
a.不能在儲存過程中返回結果集,只能放在臨時表中
b.有些sql語句動態執行會報錯(複雜的sql)。
儲存過程中is的含義
例子 create or replace procedure proc1 para1 varchar2,para2 out varchar2,para3 in out varchar2 as v name varchar2 20 變數宣告塊 緊跟著的as is 關鍵字,可以理解為pl sql的dec...
儲存過程中呼叫儲存過程
use northwind go 儲存過程1 功能 通過員工firstname inputempfirstname 獲得 員工id outid if exists select name from sysobjects where name p getempleeidbyname and type ...
儲存過程中的遊標使用
利用儲存過程來消除資料庫中冗餘的資料 create procedure sp mytest as declare pro varchar 50 declare mm int declare wu cursor for select distinct product from mytest open ...
儲存過程中的output應用
create procedure ega drugreg checkverifycode verifycode nvarchar 50 校驗碼 type nvarchar 10 表型別,見下case塊 rid nvarchar 128 output 如有相同校驗碼,輸出id,否則 as set ri...
儲存過程中的優化建議
一 儘量避免對同一張表尤其是資料量較大的表進行重複訪問,可以考慮先根據條件提取資料到臨時表中,然後再做連線。二 儘量減少update 語句的使用,儘量使用select 語句查出儘量簡練的資料然後使用update 應為在資料庫操作中update 要鎖表而select 不會三 儘量避免遊標的使用,在運算...