以下程序符合細,Oracle存儲過程不工作
CREATE PROCEDURE PROCEDURE1
(v_MGR int,
v_empid IN OUT int)
AS
BEGIN
v_empid :=0;
IF (v_mgr IS NOT NULL AND v_mgr <> '') then
EXECUTE IMMEDIATE 'SELECT EMPNO
FROM EMP
WHERE MGR = Rtrim(v_MGR)' into v_empid;
END IF;
END PROCEDURE1;
但是當我運行
DECLARE
V_MGR NUMBER;
V_EMPID NUMBER;
BEGIN
V_MGR := 7902;
V_EMPID := NULL;
PROCEDURE1(
V_MGR => V_MGR,
V_EMPID => V_EMPID
);
DBMS_OUTPUT.PUT_LINE('V_EMPID = ' || V_EMPID);
END;
輸出應v_empid = 2356
但其始終表示v_empid = 0請幫忙得到正確答案
@itmitică'A = null'條件將永遠不會被評估無論爲true空字符串是否已經被分配給了''變量或沒有。不要將它與PL/SQL中直接比較兩個空字符串('''=''')的條件評估爲真的情況混淆。 –
我同意。我的觀點是'a = null'與'a是null'不一樣。這是一個sqlfiddle:http://sqlfiddle.com/#!4/bbbc6/1 – itmitica