iT邦幫忙

0

oracle 宣告變數問題

我的語法沒這麼短
假如我要帶入20
讓整支語法不要一值重複輸入20的數字
利用bb當變數,但一直失敗
這是啥問題??

declare
    bb number:=20; --資料庫內aa是number格式
    cc number;
begin
DBMS_OUTPUT.PUT_LINE(bb); --在這有傳入20沒問題,但select就無法傳入了
select aa into cc from db.tab1
where aa = 'bb';
end;
石頭 iT邦研究生 2 級 ‧ 2019-03-18 11:52:21 檢舉
你的 aa 是 'bb' string type. 你怎麼期望他轉成 int or number呢?
阿偉 iT邦新手 2 級 ‧ 2019-03-18 11:58:56 檢舉
修正了一下還是不行
另外aa是number格式

1 個回答

1
尼克
iT邦高手 1 級 ‧ 2019-03-19 09:52:58
DECLARE
   bb   NUMBER := 20;
   cc   NUMBER := 0;
BEGIN
   SELECT aa
     INTO cc
     FROM tab1
    WHERE aa = 11;
    DBMS_OUTPUT.PUT_LINE('cc value'||cc);
    DBMS_OUTPUT.PUT_LINE('bb value' || bb);
END;
阿偉 iT邦新手 2 級 ‧ 2019-03-19 10:39:17 檢舉

我沒有要印bb cc的值,我是要讓WHERE aa = bb;
像MSSQL那樣做法
WHERE aa = @bb
@bb可以取出到最外面,以便重複使用

尼克 iT邦高手 1 級 ‧ 2019-03-19 10:44:13 檢舉

CC 就是變數值,可以重複使用

阿偉 iT邦新手 2 級 ‧ 2019-03-25 15:38:05 檢舉

你這邊
WHERE aa = 11; << 11 還是指定的
我想要改成 WHERE aa = 'bb';
在把bb變數提到最外面
這樣可以嗎?
因為bb要輸入很多次
像MSSQL那樣提到外面一次輸入比較方便

我要發表回答

立即登入回答