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

db2存儲過程部署

發布時間: 2023-01-11 10:59:05

『壹』 DB2 DataStudio存儲過程入門

建好後 看到如下界面,圖中DDL部分是選擇的存儲過程模板

場景:
輸入兩個參數A和B,並求和
DDL
只需要按照模板,修改參數部分和主體部分即可

DDL的空白處,滑鼠右鍵——》部署 或者 單擊 部署 按鈕

存儲過程——》運行 或者 單擊 運行 按鈕 如圖

『貳』 db2存儲過程

CREATE OR REPLACE PROCEDURE PROCEDURE_NAME(IN FILED FILE_TYPE|OUT FIELD FIELD_TYPE|INOUT FIELD_TYPE)

  BEGIN

   [DECLARE I INT DEFAULT 1;]

   [可以寫循環:

    REPEAT 

    UNTIL (...)

    END REPEAT;

   ]

   ...

  END

  @

  CREATE OR REPLACE PROCEDURE INSERTDATA(

  IN COUNTS INT

  )  

  BEGIN

   DECLARE I INT DEFAULT 1;

   REPEAT

    insert into ESBTLOG(UUID, UUID_POS, MSG_ID, ESB_CODE, CLI_ID, CLI_ID_BOCS, SERV_ID, SERV_TRAN_CODE, SERV_TCODE, ESB_RET_CODE, ERR_MSG, TRACE_NO, TRAN_DATE, TRAN_TIME, TXN_STATUS, JOURNAL_NO, EXT_UUID, TXN_TOKEN, NODE_NAME, TRAN_BEGIN_TIME, TRAN_END_TIME, SP1_BEGIN_TIME, SP1_END_TIME, USER_BOCS, WKSTATION, RET_TRAN_DATE, RET_TRAN_TIME, RET_AC_DATE, RET_TRACE_NO, AP_TRACE_NO, BR_NO, TM_SMP)

    values('141114B0000R', '0-0-0-0-25', '', 'BOCI060460', '520', '14', '-', '-', '000000', '2020001003', 'Send To client error.QM:CAPAQ01 QUEUE:ESB.CAP.RES.LQ1', '530000U1KQUMT', '20180730', '095310', 'E', '-', '-', '-', 'ESB.QM2', '2018-12-11-09.51.16.398765', '2018-12-11-09.51.16.398765', '2018-12-11-09.51.16.398765', '2018-12-11-09.51.16.398765', '4980261', '994', '-', '-', '-', '-', '-', '51604', '2018-12-11-09.51.16.398765');

    SET I = I + 1;

   UNTIL (I > COUNTS)

   END REPEAT;

  END

  @

注意:寫存儲過程需要以一個符號結尾,此處用的是@符號

db2 "select * from SYSCAT.PROCEDURES where PROCNAME='INSERTDATA'"

    db2 "drop procere INSERTDATA2SIPTLOG(INT,VARCHAR())"

注意:要將參數帶進去

    db2 -td@ -vf filename (該文件需以@符號結尾).

-td選項讓命令行處理程序使用@作為語句終止字元;-v選項讓命令處理程序將命令文本回顯到標准輸出;-f讓命令行處理程序從指定文件讀取命令輸入

『叄』 db2如何創建存儲過程

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

『肆』 DB2中建立存儲過程的詳細參數和語法

DECLARE CHOICE2 CURSOR WITH RETURN TO CALLER FOR --聲明游標 CHOICE2
SELECT COMPANYID,DEPTID,SEQID,SUBMITTIME,SUBMITDATE,
B.GRADEDESC HYEAR,PRODUCTID,PRODUCTCODE,PRODUCTDESC,
A.GRADEID,PRICE,SFZDPY,LQUANT,MQUANT,MCQUANT,LCQUANT,
UQUANT,OTHQUANT1,OTHQUANT2,OTHQUANT3,OTHQUANT4,EMP1,EMP2,STATUS,A.REMARK,
DECIMAL(ABS(MCQUANT-MQUANT)/NULLIF(MQUANT,0)*100,10,2)TAG
FROM T_SUPPLY_PPB_HY A
LEFT JOIN T_SUPPLY_GRADATION B ON A.GRADEID=B.GRADEID
WHERE HYEAR=TO_CHAR(P_NF)||P_BN
ORDER BY B.GRADEID,PRODUCTCODE,A.PRICE;

--1.DECIMAL(P,S)十進制數,小數點位置由數字的精度(P)和小數位(S)確定。
-- 精度是數字的總位數,必須小於32。小數位是小數部分數字的位數且總是小於或等於精度值。
-- 如果未指定精度和小數位,則十進制值的預設精度為5,預設小數位為0。
--2.語法:NULLIF ( expression , expression )
-- expression:(常量、列名、函數、子查詢或算術運算符、按位運算符以及字元串運算符的任意組)
-- 如果兩個表達式不相等,NULLIF 返回第一個 expression 的值。如果相等,NULLIF 返回第一個 expression 類型的空值。如果兩個表達式相等且結果表達式為 NULL,NULLIF 等價於 CASE 的搜索函數。

『伍』 DB2存儲過程語法

http://www.51cto.com/specbook/49/3606.htm

此語句創建一個名為 gbl_temp 的用戶臨時表。定義此用戶臨時表所使用的列的名稱和說明與 empltabl 的列的名稱和說明完全相同。隱式定義只包括列名、數據類型、可為空特性和列預設值屬性。未定義所有其他列屬性,包括唯一約束、外部關鍵字約束、觸發器和索引。執行 COMMIT 操作時,若未對該表打開 WITH HOLD 游標,則該表中的所有數據都被刪除。不記錄對用戶臨時表所作的更改。用戶臨時表被放在指定的用戶臨時表空間中。此表空間必須存在,否則此表的聲明將失敗。

在上面的例子中,創建 CLP 連接後聲明了一個臨時表。然後創建了引用臨時表的過程 p1。這里要注意的關鍵是,即使在過程體中沒有聲明臨時表,該過程也被成功創建。

『陸』 DB2 V9.7存儲過程調試

CREATE PROCEDURE usp_client_insert
(
IN i_tradeSN VARCHAR(20),
IN i_scanSN VARCHAR(20),
OUT o_tradeID INT,
OUT Erro INT,
OUT Erro_msg VARCHAR(20)
)
language sql
specific SPOVERTIMEPAY
dynamic result sets 1
modifies sql data

BEGIN
DECLARE re_1 VARCHAR(20) default 'un';

declare exit handler for not found
begin
set Erro =99;
set vErro_msg = 'insert new trade record failed.';
end;

SET o_tradeID = 0;
if (i_tradeSN is null and i_scanSN is null) then
SET Erro =99;
SET Erro_msg = 'no record for insert.';
THEN SIGNAL SQLSTATE '77880' SET MESSAGE_TEXT = 'no record for insert.';
end if;

if i_tradeSN is null then
SELECT TRADEID INTO o_tradeID FROM TBLTRADES WHERE SCANSN = i_scanSN;
end if;

if i_scanSN is null then
SELECT TRADEID INTO o_tradeID FROM TBLTRADES WHERE TRADESN = i_tradeSN;
end if;

if o_tradeID = 0 then
INSERT INTO TBLTRADES (TRADESN, SCANSN, REMARKS) VALUES ( i_tradeSN,i_scanSN,re_1);
SELECT TRADEID INTO o_tradeID FROM TBLTRADES WHERE TRADESN = i_tradeSN and SCANSN = i_scanSN;
end if;
END

『柒』 DB2怎樣創建存儲過程

CREATE PROCEDURE "DB2INST2"."SP_SF_GET_PRESC"
(IN "V_GHXH" BIGINT,
IN "V_RECORDSTATUS" SMALLINT,
IN "V_TYPE" SMALLINT,
IN "V_PRESCNO" BIGINT,
IN "V_ISQX" SMALLINT,
OUT "ERR_CODE" INTEGER,
OUT "ERR_TEXT" VARCHAR(100)
)

LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL ACTION
OLD SAVEPOINT LEVEL
MODIFIES SQL DATA
INHERIT SPECIAL REGISTERS
P1: BEGIN
DECLARE SQLCODE INT;
DECLARE V_CFQX SMALLINT;
DECLARE V_SFFYKS BIGINT;--
DECLARE V_YBDM CHAR(4);
--具體實現
END P1;

『捌』 DB2 如何創建存儲過程

這個是可以的,我在aix機子上用的代碼如下:
db2 connect to ETL user ETL using ETL
db2 –td@ -vf createSQLproc.sql
你可以看看你的腳本是否有問題,如果資料庫中該存儲過程不存在可以直接這樣寫:
db2 –tvf createSQLproc.sql
還有,就是你的許可權,看看你是否有許可權!

『玖』 如何快速掌握DB2存儲過程

做項目很急的話,網上搜存儲過程例子,遇到問題多查官方文檔或者網上搜,網上有DB2的社區,那邊更專業高手也多,如果時間相對寬松,可以選擇性多看看DB2的官方文檔(DB2結構原理和DB2編程的)。

『拾』 DB2存儲過程

db2 -td@ -vf a.db2
這一句中@的意思是讀取文件中的分隔,每遇到一個@號會將之前的SQL語句做為單獨一段來執行,你的存儲過程中有使用了這個符號,則執行時將創建存儲過程的語句給分拆開了,所以執行會同語法錯誤,你這一段中只需要兩個@號,第一句連接資料庫後用一個,最後用一個,中間的改成「;」號。

connect to toolsdb@
CREATE PROCEDURE testProced(
in in_name varchar(20),
out out_name varchar(20)
)
LANGUAGE SQL

BEGIN
select a into out_name from bb where a1 = in_name;
END@

熱點內容
convertlinux 發布:2024-05-02 18:20:00 瀏覽:705
zxingandroid簡化 發布:2024-05-02 17:47:53 瀏覽:189
貴州銀行卡查詢密碼是什麼 發布:2024-05-02 17:47:17 瀏覽:119
颶風演算法沒用 發布:2024-05-02 17:41:41 瀏覽:350
android鈴聲設置 發布:2024-05-02 17:40:01 瀏覽:485
php日記本 發布:2024-05-02 17:28:22 瀏覽:850
msc拒絕訪問 發布:2024-05-02 17:19:09 瀏覽:122
php函數漏洞 發布:2024-05-02 17:15:26 瀏覽:963
linux訪問localhost 發布:2024-05-02 17:04:11 瀏覽:880
劍三自動任務腳本 發布:2024-05-02 16:59:42 瀏覽:526