db2存儲過程參數
⑴ 如何給DB2資料庫的存儲過程中 where 的in 條件傳參數
create
or
replace
procere
test(in
in_where
varchar(100))
--創建一個存儲過程test,並可以傳入字元串作為參數
declare
v_sql
varchar(512);
set
v_sql
=
'
delete
from
table1
where
field1
in
('
concat
in_where
concat
')
'
;
--
這里是把傳進來的where語句拼起來
execute
immediate
v_sql;
--這里是把語句進行執行---------類似以上這樣的存儲過程,使用以下的放在進行執行即可:call
test(
'
''001'',''002''
')
;
--內容中的一個『
需要使用
』『
進行轉義
⑵ 如何給DB2資料庫的存儲過程中 where 的in 條件傳參數
WITH RETURN TO CALLER DECLARE CHOICE2游標 - 聲明游標Choice2
SELECT CompanyID,DEPTID,SEQ ID SUBMITTIME,
B.GRADEDESC HYEAR,產品編號,產品代碼PRODUCTDESC
A.GRADEID,價格,SFZDPY,的LQUANT,MQUANT,MCQUANT,LCQUANT,
UQUANT OTHQUANT1 OTHQUANT2 OTHQUANT3 OTHQUANT4,EMP1 EMP2狀態,A.REMARK:
十進制(ABS(MCQUANT,
NULLIF(MQUANT,0)* 100,10,2)標簽/>從T_SUPPLY_PPB_HYà
LEFT JOIN B開A.GRADEID的T_SUPPLY_GRADATION的B.GRADEID
,WHERE HYEAR = TO_CHAR(P_NF )| | P_BN
訂單由B.GRADEID PRODUCTCODE,A.PRICE;
- 1.DECIMAL(P,S)十進制數,小數點位置精度(P)和確定的小數位數(S)。 /> - 精度的號碼的數字之和的總數必須小於32。小數位的數字位數的小數部分總是小於或等於精度。
- 如果你不指定精度和小數位數,默認精度的十進制值是5,和默認的小數位數為0。
- 2語法:NULLIF(表達式,表達式)
- 表達式:(常量,列名,函數,子查詢或算術運算符,任何按位運算符和字元串運算組)
- 如果兩個表達式不相等,NULLIF返回第一個表達式的值。如果他們是平等的,NULLIF返回第一個表達式類型的空值。如果兩個表達式都是平等的,表達式的結果是NULL,NULLIF相當於CASE的搜索功能。
⑶ db2的過程中怎樣寫異常處理
創建SQL存儲過程(CREATEPROCEDURE(SQL)statement)
CREATEPROCEDUREprocere-name(IN|OUT|INOUTparameter-namedata-type,...))---存儲過程可以設定輸入參數和輸出參數
LANGUAGESQL----DB2可以用多種語言編寫存儲過程,這里用的是純SQL
BEGIN---開始
DECLAREvIDsmallint;---定義變數和Oracle一樣DECLARE變數名變數的數據類型;
FORVASSELECTBRND_CDFROMTMP_BRND_CD---for循環tmp_brnd_cd預先創建好
DO---循環體開始
SETvID=BRND_CD;---對vID賦值,db2可以用set賦值,也可以用values賦值,這里可以寫成values(BRND_CD)intovID
INSERTINTOWWM_FORINSERT_TESTVALUES(vID);---往wwm_forinsert_test插入數據
ENDFOR;-----循環體結束
END@-----存儲過程結束
參數語法說明
1、procere-name:存儲過程的名字,在同一個資料庫的同一模式下,不能存在存儲過程名相同參數數目相同的存儲過程,即使參數的類型不同也不行。
2、(IN|OUT|INOUTparameter-namedata-type,...):傳入參數IN:輸入參數OUT:輸出參數INOUT:作為輸入輸出參數parameter-name:參數名字,在此存儲過程中唯一的標識符。data-type:參數類型,可以接收SQL類型和創建的表。不支持LONGVARCHAR,LONGVARGRAPHIC,DATALINK,REFERENCE和用戶自定義類型。
3、SPECIFICspecific-name:唯一的特定名稱(別名),可以用存儲過程名代替,這個特定名稱用於dorp存儲過程,或者給存儲過程添加註視用,但不能調用存儲過程。如果不指定,則資料庫會自動生成一個yymmddhhmmsshhn時間戳的名字。推薦給出別名。
4、DYNAMICRESULTSETSinteger:指定存儲過程返回結果的最大數量。存儲過程中雖然沒有return語句,但是卻能返回結果集。
5、CONTAINSSQL,READSSQLDATA,MODIFIESSQLDATA:指定存儲過程中的SQL訪問級別CONTAINSSQL:表示存儲過程可以執行中,既不可讀取SQL數據,也不可修改SQL數據。READSSQLDATA:表示存儲過程可以執行中,可讀取SQL,但不可修改SQL數據。MODIFIESSQLDATA:表示存儲過程可以執行任何SQL語句。可以對資料庫中的數據進行增加、刪除和修改。
6、:表示存儲過程是動態或者非動態的。動態的返回的值是不確定的。非動態的存儲過程每次執行返回的值是相同的。
7、CALLEDONNULLINPUT:表示可以調用存儲過程而不管任何的輸入參數是否為NULL,並且,任何的OUT或者INOUT參數可以返回一個NULL或者非空值。檢驗參數是否為NULL是在過程中進行的。
8、INHERITSPECIALREGISTERS:表示繼承專用寄存器。
9、:建立存儲點。OLDSAVEPOINTLEVEL是默認的存儲點。
10、LANGUAGESQL:指定程序的主體用的是SQL語言。
11、:表示存儲過程是否執行一些改變理資料庫狀態的活動,而不通過資料庫管理器管。默認是EXTERNALACTION。如果指定為NOEXTERNALACTION,則資料庫會確定最最佳優化方案。
12、PARAMETERCCSID:指定所有輸出字元串數據的編碼,默認為UNICODE編碼資料庫為PARAMETERCCSIDUNICODE,其他的資料庫默認為PARAMETERCCSID3ASCII。
13、SQL-procere-body:存儲過程的主體