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

博客讨论了一个PL/SQL存储过程中调用外部函数时遇到的问题,错误提示为PLS-00363。解决方案是将输入参数v_TradeDate改为IN OUT类型,允许在过程中进行赋值操作。调整后的代码成功解决了调用外部函数BJT2UTC的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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 

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 

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……

不熟悉还是蛮可怕哦 谢了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值