存储过程调用外部函数的有关问题

存储过程调用外部函数的问题CREATE OR REPLACE PROCEDURE spSelPreSettleDate( v_TradeDate NUMBER, v_Set

存储过程调用外部函数的问题

CREATE OR REPLACE PROCEDURE spSelPreSettleDate
(
 v_TradeDate NUMBER,
 v_SettleDay OUT NUMBER
)
AS
BEGIN 
IF  v_TradeDate IS  NULL THEN
v_TradeDate:=HYHQ.BJT2UTC(SYSDATE);
    
    SELECT NVL(SettleDay,0)
    INTO 
    v_SettleDay
  FROM  SettleStatus  a 
WHERE  a.SettleDay <v_TradeDate
AND  a.Flag=0
AND ROWNUM=1
ORDER  BY SettleDay DESC;
END IF;
END;

BJT2UTC 外部函数
报错
9/1      PLS-00363: expression 'V_TRADEDATE' cannot be used as an assignment target
9/1      PL/SQL: Statement ignored
指导下
[最优解释]
CREATE OR REPLACE PROCEDURE spSelPreSettleDate(v_TradeDate in out NUMBER,  --定义成in out参数不就行了
                                               v_SettleDay OUT NUMBER) AS
BEGIN
  IF v_TradeDate IS NULL THEN
    v_TradeDate := HYHQ.BJT2UTC(SYSDATE);
    SELECT NVL(SettleDay, 0)
      INTO v_SettleDay
      FROM SettleStatus a
     WHERE a.SettleDay < v_TradeDate
       AND a.Flag = 0
       AND ROWNUM = 1
     ORDER BY SettleDay DESC;
  END IF;
END;

[其他解释]
引用:
SQL code?1234567891011121314CREATE OR REPLACE PROCEDURE spSelPreSettleDate(v_TradeDate in out NUMBER,  --定义成in out参数不就行了                                               v_SettleDay OUT NUMB……

 
不熟悉还是蛮可怕哦 谢了