當前位置:首頁 » 編程語言 » db2sql變數in
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

db2sql變數in

發布時間: 2022-01-19 18:42:47

Ⅰ db2 聲明變數問題,請教下

把所有變數聲明都放在開頭,如:

CREATE PROCEDURE "AML"."CZJY053"
(IN "DATADATE" VARCHAR(8)
)

BEGIN
declare period varchar(20);--回顧周期
declare times varchar(20);--周期內發生次數
declare sum_crat varchar(20);--周期內金額總額
set period = (select value from CONTEXT_VARIABLE where type = 'CZJY053' and key = 'period');

set times = (select value from CONTEXT_VARIABLE where type = 'CZJY053' and key = 'times');

set sum_crat = (select value from CONTEXT_VARIABLE where type = 'CZJY053' and key = 'sum_crat');
DELETE FROM T_FXQNBS WHERE REMARK1 = 'CZJY053';
INSERT INTO T_FXQNBS select * FROM FXQTRADE_CC TRANS,(SELECT CSNM,TCAC FROM FXQTRADE_CC WHERE TSTM>to_char(to_date(DATADATE,'yyyymmdd')-period days,'yyyymmdd') AND opcustomtype in (select key_value from FXQPARAM where key ='opcustomtype_cc') GROUP BY CSNM,TCAC HAVING COUNT(*)>=9 AND SUM(CRAT) >=1800000) A
WHERE TRANS.TSTM = DATADATE
AND TRANS.CSNM = A.CSNM
AND TRANS.TCAC = A.TCAC;

END;

Ⅱ DB2的in的問題

這是db2語法的特殊的地方
IBM DB2 是美國IBM公司開發的一套關系型資料庫管理系統,它主要的運行環境為UNIX(包括IBM自家的AIX)、Linux、IBM i(舊稱OS/400)、z/OS,以及Windows伺服器版本。
DB2主要應用於大型應用系統,具有較好的可伸縮性,可支持從大型機到單用戶環境,應用於所有常見的伺服器操作系統平台下。 DB2提供了高層次的數據利用性、完整性、安全性、可恢復性,以及小規模到大規模應用程序的執行能力,具有與平台無關的基本功能和sql命令。DB2採用了數據分級技術,能夠使大型機數據很方便地下載到LAN資料庫伺服器,使得客戶機/伺服器用戶和基於LAN的應用程序可以訪問大型機數據,並使資料庫本地化及遠程連接透明化。 DB2以擁有一個非常完備的查詢優化器而著稱,其外部連接改善了查詢性能,並支持多任務並行查詢。 DB2具有很好的網路支持能力,每個子系統可以連接十幾萬個分布式用戶,可同時激活上千個活動線程,對大型分布式應用系統尤為適用。

Ⅲ sql語句中in內為什麼不能超過1000個值

你是在存儲過程里用嗎?用一個varchar的變數來做sql並執行?varchar最長是8000個字元。我估計你的語句超長了。 超長就被截斷,自然會報錯。

Ⅳ DB2的SQL腳本如何定義變數,並賦值使用執行成功有重賞哦,謝謝

用存儲過程啊,給你個簡單的例子
CREATE PROCEDURE SPCARDTRACE
(
IN I_CARDNO VARCHAR(10)
)

-- 存儲過程功能 :
-- 創建人:
-- 創建日期:
-- 參數說明:
-- 01. : I_CARDNO 卡號
-- 02. :
-- 03. :

LANGUAGE SQL
SPECIFIC SPCARDTRACE
DYNAMIC RESULT SETS 1
MODIFIES SQL DATA

BEGIN
DECLARE V_CARDNO VARCHAR(10); --卡號
DECLARE V_EMPNAME VARCHAR(16); --持卡人
DECLARE V_CARDBALANCE DECIMAL(8,2); --卡余額
DECLARE V_HAPPENDATE INT;--統計時間
DECLARE V_MINTIME TIMESTAMP; --最小時間
DECLARE V_MAXTIME TIMESTAMP; --最大時間
DECLARE V_MINMONTH INT ;
DECLARE V_MAXMONTH INT ;
DECLARE V_ISSUECARDDATE TIMESTAMP; --發卡時間
DECLARE V_SUBSIDYMONEY DECIMAL(8,2);--補貼金額
DECLARE V_CONSUMEMONEY DECIMAL(8,2);--沖值金額
DECLARE V_PUTMONEY DECIMAL(8,2);--沖值金額
DECLARE V_OUTMONEY DECIMAL(8,2);--退款金額
DECLARE V_CHANGEMONEY DECIMAL(8,2);--改卡差額
DECLARE V_STRSQL VARCHAR(1000); --SQL
DECLARE CS CURSOR WITH RETURN TO CALLER FOR RETURNTABLE;

INSERT INTO TBCARDTRACE ( CARDNO,EMPNAME,CARDBALANCE,ISSUECARDDATE ,HAPPENDATE,
SUBSIDYMONEY,PUTMONEY,OUTMONEY ,CONSUMEMONEY,CHANGEMONEY )
VALUES (V_CARDNO,V_EMPNAME,V_CARDBALANCE,V_ISSUECARDDATE,V_HAPPENDATE,
V_SUBSIDYMONEY,V_PUTMONEY,V_OUTMONEY,V_CONSUMEMONEY,V_CHANGEMONEY);

END

Ⅳ db2按照查詢條件的 in中的數據排序

不知道SQL語句,不過用兩條SQL語句,然後保存到數據集,再輸出看看!

Ⅵ db2中有select into嗎我想將幾個值同時插入到幾個變數

if exists(SELECT t.HM, substr(t.zh,7,3),replace(char(t.KHRQ),'-',''),t.ZHLB
INTO :v_table_accname,:v_table_brno,:v_table_khrq,:v_table_zhxz
FROM BRAS.FHDGCKFHZ t
WHERE t.ZH=new.ACCNO) then
當然不行,INTO是給變數賦值,
你要判斷變數是否有值,在IF THEN 中判斷

Ⅶ 如何給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語句的not in查詢問題

select email from tablename group by email having count(*) = 1;

這樣查詢, 有數據么?

Ⅸ 請問如何給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的搜索功能。