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

db2存儲過程輸出

發布時間: 2023-08-30 15:52:30

Ⅰ 在java中調用db2存儲過程,怎樣給存儲過程傳

JDBC調用存儲過程: CallableStatement
在Java裡面調用存儲過程,寫法那是相當的固定:
Class.forName(....
Connection conn = DriverManager.getConnection(....
/**
*p是要調用的存儲過程的名字,存儲過程的4個參數,用4個?號佔位符代替
*其餘地方寫法固定
*/
CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");
/**
*告訴JDBC,這些個參數,哪些是輸出參數,輸出參數的類型用java.sql.Types來指定
*下面的意思是,第3個?和第4個?是輸出參數,類型是INTEGER的
*Types後面具體寫什麼類型,得看你的存儲過程參數怎麼定義的
*/
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
/**
*在我這里第1個?和第2個?是輸入參數,第3個是輸出參數,第4個既輸入又輸出
*下面是設置他們的值,第一個設為3,第二個設為4,第4個設置為5
*沒設第3個,因為它是輸出參數
*/
cstmt.setInt(1, 3);
cstmt.setInt(2, 4);
cstmt.setInt(4, 5);
//執行
cstmt.execute();
//把第3個參數的值當成int類型拿出來
int three = cstmt.getInt(3);
System.out.println(three);
//把第4個參數的值當成int類型拿出來
int four = cstmt.getInt(4);
System.out.println(four);
//用完別忘給人家關了,後開的先關
cstmt.close();
conn.close();

JDBC調用存儲過程,掌握這一個程序足夠了.
以下是上面程序使用的存儲過程的代碼,我用的是Oracle資料庫,不過不論是什麼資料庫,對於你的程序,JDBC這一端寫法都是一樣的.

create or replace procere p
(v_a in number,v_b number,v_ret out number,v_temp in out number)
is
begin
if(v_a > v_b) then
v_ret := v_a;
else
v_ret := v_b;
end if;
v_temp := v_temp + 1;
end;

Ⅱ db2存儲過程變數問題

創建SQL存儲過程(CREATE PROCEDURE (SQL) statement )
CREATE PROCEDURE procere-name(IN | OUT | INOUT parameter-name data-type,...) ) ---存儲過程可以設定輸入參數和輸出參數LANGUAGE SQL ----DB2可以用多種語言編寫存儲過程,這里用的是純SQLBEGIN ---開始DECLARE vID smallint; ---定義變數 和Oracle一樣 DECLARE 變數名 變數的數據類型;FOR V AS SELECT BRND_CD FROM TMP_BRND_CD ---for循環 tmp_brnd_cd預先創建好DO ---循環體開始SET vID=BRND_CD; ---對vID賦值,db2可以用set賦值,也可以用values賦值,這里可以寫成values(BRND_CD) into vIDINSERT INTO WWM_FORINSERT_TEST VALUES(vID); ---往wwm_forinsert_test 插入數據END FOR; --

Ⅲ db2如何導出整個資料庫(包括視圖,表結構,表數據,索引,序列,存儲過程,觸發器等)

db2move只能到出表結構和數據....導出其他的用db2look
如:
db2look -d databasename -a -e -i username -w password -o db2.sql

Ⅳ 如何在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存儲過程內部實現export、import或者load等導入導出操作

export to c:/a.del of del select * from a這樣可以直接把數據導入到本地目錄;
在存儲過程中可以這樣調用CALL SYSPROC.ADMIN_CMD('export to c:/a.del of del select * from a')只是導出路徑要寫sever端,這樣導出的數據會保存在安裝db2資料庫的電腦上,而不會保存在客戶端上

Ⅵ 如何使用Dbvisualizer工具調用db2存儲過程顯示輸出參數結果

dbvisualizer中執行命令是在:Help=》License Key。具體如下:
第一步:把下載的dbvis.puk文件,替換掉安裝目錄「D:\Program Files\DbVisualizer-6.0.12\lib」下dbvis.jar裡面的這個文件dbvis.puk。
第二步:然後打開軟體,選擇Help=》License Key ,然後下載導入dbvis.license文件。
第三步:重起一下軟體就可以了。
DbVisualizer是一個完全基於JDBC的跨平台資料庫管理工具,內置SQL語句編輯器,凡是具有JDBC資料庫介面的資料庫都可以管理,已經在Oracle, Sybase, DB2, MySQL, InstantDB, Cloudcape, HyperSonic ,Mimer SQL上通過測試。

Ⅶ db2中存儲過程調用存儲過程的輸出參數怎麼寫

db2 => CREATE PROCEDURE HelloWorld2 ( \
db2 (cont.) => IN vUserName <a href="https://www..com/s?wd=VARCHAR&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">VARCHAR</a>(10), \
db2 (cont.) => OUT vOutValue <a href="https://www..com/s?wd=VARCHAR&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank" class="-highlight">VARCHAR</a>(10), \
db2 (cont.) => INOUT vInOutValue <a href="https://www..com/s?wd=VARCHAR&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">VARCHAR</a>(10)) \
db2 (cont.) => LANGUAGE SQL \
db2 (cont.) => BEGIN \
db2 (cont.) => INSERT INTO test_helloworld \
db2 (cont.) => VALUES('Hello ' || vUserName || vInOutValue); \
db2 (cont.) => SET vOutValue = 'A'; \
db2 (cont.) => SET vInOutValue = 'B'; \
db2 (cont.) => <a href="https://www..com/s?wd=END&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">END</a>
DB20000I SQL 命令成功完成。

db2 => truncate table test_helloworld IMMEDIATE
DB20000I SQL 命令成功完成。

db2 => BEGIN \
db2 (cont.) => DECLARE p_outval VARCHAR(10); \
db2 (cont.) => DECLARE p_inoutval VARCHAR(10); \
db2 (cont.) => SET p_inoutval = '~Hi~'; \
db2 (cont.) => call HelloWorld2('<a href="https://www..com/s?wd=Edward&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">Edward</a>', p_outval, p_inoutval); \
db2 (cont.) => INSERT INTO test_helloworld VALUES('p_outval=' || p_outval); \
db2 (cont.) => INSERT INTO test_helloworld VALUES('p_inoutval=' || p_inoutval)
; \
db2 (cont.) => <a href="https://www..com/s?wd=END&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">END</a>
DB20000I SQL 命令成功完成。

db2 => select * from test_helloworld
<a href="https://www..com/s?wd=DATA&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">DATA</a>
--------------------
Hello <a href="https://www..com/s?wd=Edward&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">Edward</a>~Hi~
p_outval=A
p_inoutval=B
3 條記錄已選擇。

Ⅷ 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 的搜索函數。

熱點內容
說話加密 發布:2025-01-31 14:02:28 瀏覽:552
android倉庫管理系統 發布:2025-01-31 14:02:27 瀏覽:700
batsql語句 發布:2025-01-31 14:00:13 瀏覽:733
沈陽加密狗 發布:2025-01-31 13:54:58 瀏覽:705
聯想伺服器怎麼裝windows7 發布:2025-01-31 13:54:52 瀏覽:874
java二級考試歷年真題 發布:2025-01-31 13:50:31 瀏覽:171
編程一刻 發布:2025-01-31 13:36:44 瀏覽:585
編程小草出土 發布:2025-01-31 13:33:27 瀏覽:579
如何設置伺服器屏蔽你的ip 發布:2025-01-31 13:25:58 瀏覽:243
扣扣的獨立密碼是什麼密碼 發布:2025-01-31 13:23:42 瀏覽:132