當前位置:首頁 » 存儲配置 » db2存儲過程sql

db2存儲過程sql

發布時間: 2022-09-13 04:07:57

⑴ 請教一個db2的存儲過程

1、存儲過程編寫

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

DROP PROCEDURE "PLName"
@
CREATE PROCEDURE "PLName"(--存儲過程名字
IN IN_ID BIGINT , --以下全是輸入參數
IN IN_ENTNAME VARCHAR(200) ,
IN IN_REGNO VARCHAR(50),
IN IN_PASSWORD VARCHAR(20),
IN IN_LEREP VARCHAR(300),
IN IN_CERTYPE CHARACTER(1),
IN IN_CERNO VARCHAR(50),
IN IN_LINKMAN VARCHAR(50),
IN IN_SEX CHARACTER(1),
IN IN_MOBTEL VARCHAR(30),
IN IN_REQDATE TIMESTAMP,
IN IN_REMITEM VARCHAR(300),
IN IN_STATE CHARACTER(1),
IN IN_TIMESTAMP TIMESTAMP
)
BEGIN

declare V_RESULT BIGINT; --聲明變數
DELETE FROM TableNameA WHERE ID = IN_ID;
SET V_RESULT = NULL; --為變數賦值
--檢查用戶輸入的信息是否合法
select b.id INTO V_RESULT from TableNameB b,TableNameC c where 正常的判斷條件
if(V_RESULT IS NOT NULL) then ---如果合法,執行下面的insert語句
INSERT INTO TableNameA(ID,ENTNAME,REGNO,PASSWORD,LEREP,CERTYPE,CERNO,LINKMAN,SEX,MOBTEL,REQDATE,REMITEM,STATE,TIMESTAMP)
VALUES(IN_ID,IN_ENTNAME,IN_REGNO,IN_PASSWORD,IN_LEREP,IN_CERTYPE,IN_CERNO,IN_LINKMAN,IN_SEX,IN_MOBTEL,IN_REQDATE,IN_REMITEM,IN_STATE,IN_TIMESTAMP);
end if;
commit;
END
@

2、調用存儲過程
1.拷貝到DB2客戶端工具中直接執行
2.將上面的語句保存為test.db2文件放到任意目錄下(比如D盤根目錄),然後在cmd輸入db2cmd 然後輸入db2 -td@ -vf D:\test.db2即可
3.直接寫sql
call PLName(存儲過程名字) (IN_ID,IN_ENTNAME,IN_REGNO,IN_PASSWORD,IN_LEREP,IN_CERTYPE,IN_CERNO,IN_LINKMAN,IN_SEX,IN_MOBTEL,IN_REQDATE,IN_REMITEM,IN_STATE,IN_TIMESTAMP對應的值)

⑵ db2 存儲過程 異常處理

存儲過程異常的處理:
DECLARE handler-type HANDLER FOR condition handler-action

異常處理器類型(handler-type)有以下幾種:
CONTINUE 在處理器操作完成之後,會繼續執行產生這個異常語句之後的下一條語句。
EXIT 在處理器操作完成之後,存儲過程會終止,並將控制返回給調用者。
UNDO 在處理器操作執行之前,DB2會回滾存儲過程中執行的SQL操作。在處理器操作完成之後,存儲過程會終止,並將控制返回給調用者。
異常處理器可以處理基於特定SQLSTATE值的定製異常,或者處理預定義異常的類。預定義的3種異常如下所示:
NOT FOUND 標識導致SQLCODE值為+100或者SQLSATE值為02000的異常。這個異常通常在SELECT沒有返回行的時候出現。
SQLEXCEPTIOIN 標識導致SQLCODE值為負的異常。
SQLWARNING 標識導致警告異常或者導致+100以外的SQLCODE正值的異常。
如果產生了NOT FOUND 或者SQLWARNING異常,並且沒有為這個異常定義異常處理器,那麼就會忽略這個異常,並且將控制流轉向下一個語句。如果產生了SQLEXCEPTION異常,並且沒有為這個異常定義異常處理器,那麼存儲過程就會失敗,並且會將控制流返回調用者。
以下示例聲明了兩個異常處理器。 EXIT處理器會在出現SQLEXCEPTION 或者SQLWARNING異常的時候被調用。EXIT處理器會在終止SQL程序之前,將名為stmt的變數設為"ABORTED",並且將控制流返回給調用者。UNDO處理器會將控制流返回給調用者之前,回滾存儲過程體中已經完成的SQL操作。

清單3:異常處理器示例
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING SET stmt = 'ABORTED';
DECLARE UNDO HANDLER FOR NOT FOUND;
如果預定義異常集不能滿足需求,就可以為特定的SQLSTATE值聲明定製異常,然後再為這個定製異常聲明處理器。語法如下:

清單4:定製異常處理器
DECLARE unique-name CONDITION FOR SQLSATE 'sqlstate'
處理器可以由單獨的存儲過程語句定義,也可以使用由BEGIN…END塊界定的復合語句定義。注意在執行符合語句的時候,SQLSATE和SQLCODE的值會被改變,如果需要保留異常前的SQLSATE和SQLCODE,就需要在執行復合語句的第一個語句把SQLSATE和SQLCODE賦予本地變數或參數。
通常,會為存儲過程定義一個執行狀態的輸出參數(例如:poGenStatus)。
declare sqlcode integer default 0;
begin
declare continue handler for sqlexception set ret = sqlcode;
declare continue handler for sqlwarning set ret = sqlcode;
declare continue handler for not found set ret = sqlcode;
end ; --異常的聲明

--異常的處理
if sqlcode< 0 or sqlcode= 100 then
set O_RetCod = RetCode;
set O_RetMsg = 'CLN02:產品實例關聯客戶過程出錯!';
insert into LOG.OPER_LOG_TAB(PROC_NAME,OBJ_TAB,REGION_COD,OPER_COUNT,ERR_CODE,DATA_TIME,OPER_TIME)
values('P_DW_CLEAN','GLOBAL TEMP',0,0,retcode,CHAR(last_3_mon_time),current TIMESTAMP);
return;
else
set RetCode = 0;
end if;

⑶ db2在linux後台執行創建存儲過程以及函數的.sql文件報錯,但是在toad中執行沒問題

在toad的左邊窗口中找到存儲過程標簽,選中存儲過程,然後右鍵--execute procere。 會彈出窗口,輸入參數,就可以調試存儲過程的。

⑷ 如何在DB2的SQL存儲過程中實現清空表求答案

db2
create
table
ttt
(c1
char(6))
not
logged
initially
插入一些數據:
然後,以下SQL存儲過程為例:
在SQL存儲過程中,以EXCECUTE
IMMEDIATE
執行
alter
table
...
activate
not
logged
initially
with
empty
table
CREATE
PROCEDURE
HUANGDK.truncat_t
(
)
DYNAMIC
RESULT
SETS
1
------------------------------------------------------------------------

⑸ db2如何創建存儲過程

1.首先連接資料庫 2.發出一下命令: DB2 -td@ -vf createSQLproc.DB2 createSQLproc.DB2文件中是創建存儲過程的SQL語句; -td 選項讓命令行處理程序使用@作為語句終止字元; -v 選項讓命令處理程序將命令文本回顯到標准輸出; -f 讓命令行處理程序從指定文件讀取命令輸入。
希望能解決您的問題。

⑹ 如何在DB2中執行存儲過程

1、db2
create
database
資料庫名
<--
創建資料庫
2、db2
connect
to
資料庫名
user
用戶名
using
用戶密碼
<--
連接資料庫
3、db2
-tvf
otpdb_v3_db2.sql
<--
為新建資料庫建立表結構
4、db2
-td@
-f
存儲過程文件絕對路徑
<--
導入存儲過程,無錯誤會提示成功
4、調用存儲過程:
Windows
下:db2
call
存儲過程名(參數1,參數2)
AIX
下:db2
<--
要先進入DB2,方可調用存儲過程或執行SQL語句
db2=>call
存儲過程名(參數1,參數2)
5、驗證插入數據是否成功
Windows
下:db2
select
count(*)
from
FTOTP_USERINFO
AIX
下:db2
<--
要先進入DB2,方可調用存儲過程或執行SQL語句
db2=>select
count(*)
from
FTOTP_USERINFO
Windows
下:db2
select
count(*)
from
FTOTP_TOKENINFO
AIX
下:db2
<--
要先進入DB2,方可調用存儲過程或執行SQL語句
db2=>select
count(*)
from
FTOTP_TOKENINFO
6、db2
SELECT
TOKEN,
PUBKEY
FROM
FTOTP_TOKENINFO
FETCH
FIRST
10000
ROWS
ONLY
>
要保存文件的絕對全路徑
<--

DB2
中導出前一萬條記錄
windows
-
e.g.
db2
SELECT
TOKEN,
PUBKEY
FROM
FTOTP_TOKENINFO
FETCH
FIRST
10000
ROWS
ONLY
>
c:\abc.txt
AIX
-
e.g.
db2
SELECT
TOKEN,
PUBKEY
FROM
FTOTP_TOKENINFO
FETCH
FIRST
10000
ROWS
ONLY
>
c:\abc.txt
<--
注意:不能先進入DB2,執行查詢與導出命令組合
7、db2
drop
procere
存儲過程名
<--
刪除存儲過程
8、db2
drop
database
資料庫名
<--
刪除指定名稱的資料庫
注,如果刪除時提示有應用程序連接到這個資料庫上,可以用如下命令斷開所有應用程序的連接:
db2
force
application
all
<--
斷開所有應用程序的連接

⑺ 如何在DB2中執行存儲過程

1、db2 create database 資料庫名 <-- 創建資料庫 2、db2 connect to 資料庫名 user 用戶名 using 用戶密碼 <-- 連接資料庫 3、db2 -tvf otpdb_v3_db2.sql <-- 為新建資料庫建立表結構 4、db2 -td@ -f 存儲過程文件絕對路徑 <-- 導入存儲過程,無錯誤會提示成功 4、調用存儲過程: Windows 下:db2 call 存儲過程名(參數1,參數2) AIX 下:db2 <-- 要先進入DB2,方可調用存儲過程或執行SQL語句 db2=>call 存儲過程名(參數1,參數2) 5、驗證插入數據是否成功 Windows 下:db2 select count(*) from FTOTP_USERINFO AIX 下:db2 <-- 要先進入DB2,方可調用存儲過程或執行SQL語句 db2=>select count(*) from FTOTP_USERINFO Windows 下:db2 select count(*) from FTOTP_TOKENINFO AIX 下:db2 <-- 要先進入DB2,方可調用存儲過程或執行SQL語句 db2=>select count(*) from FTOTP_TOKENINFO 6、db2 SELECT TOKEN, PUBKEY FROM FTOTP_TOKENINFO FETCH FIRST 10000 ROWS ONLY > 要保存文件的絕對全路徑 <-- 從 DB2 中導出前一萬條記錄 windows - e.g. db2 SELECT TOKEN, PUBKEY FROM FTOTP_TOKENINFO FETCH FIRST 10000 ROWS ONLY > c:\abc.txt AIX - e.g. db2 SELECT TOKEN, PUBKEY FROM FTOTP_TOKENINFO FETCH FIRST 10000 ROWS ONLY > c:\abc.txt <-- 注意:不能先進入DB2,執行查詢與導出命令組合 7、db2 drop procere 存儲過程名 <-- 刪除存儲過程 8、db2 drop database 資料庫名 <-- 刪除指定名稱的資料庫 注,如果刪除時提示有應用程序連接到這個資料庫上,可以用如下命令斷開所有應用程序的連接: db2 force application all <-- 斷開所有應用程序的連接

⑻ 如何在DB2中執行存儲過程

1、db2 create database 資料庫名 <-- 創建資料庫 2、db2 connect to 資料庫名 user 用戶名 using 用戶密碼 <-- 連接資料庫 3、db2 -tvf otpdb_v3_db2.sql <-- 為新建資料庫建立表結構 4、db2 -td@ -f 存儲過程文件絕對路徑 <-- 導入存儲過程,無錯誤會提示成功 4、調用存儲過程: Windows 下:db2 call 存儲過程名(參數1,參數2) AIX 下:db2 <-- 要先進入DB2,方可調用存儲過程或執行SQL語句 db2=>call 存儲過程名(參數1,參數2) 5、驗證插入數據是否成功

熱點內容
nagios自定義腳本 發布:2025-01-16 08:09:52 瀏覽:364
安卓為什麼下不了方舟生存進化 發布:2025-01-16 08:02:32 瀏覽:194
如何登錄男朋友的微信密碼 發布:2025-01-16 07:41:14 瀏覽:194
寶駿解壓流程 發布:2025-01-16 07:35:35 瀏覽:2
兩匹壓縮機多少錢 發布:2025-01-16 07:29:19 瀏覽:635
個人pc搭建游戲伺服器 發布:2025-01-16 07:27:09 瀏覽:970
存儲剩餘照片 發布:2025-01-16 07:25:01 瀏覽:50
ftp解除限制上傳文件個數 發布:2025-01-16 07:16:26 瀏覽:348
梯度下降法python 發布:2025-01-16 07:10:43 瀏覽:520
載入並編譯著色器apex 發布:2025-01-16 07:00:08 瀏覽:59