我是pl sql
的新手,我尝试编写一个函数,该函数应该从db读取数据来控制它们并返回一个数字,但它会生成一个错误ORA-00900: invalid SQL statement
。我尝试在pl sql中编写函数,但它生成一个错误ORA-00900:无效的SQL语句,究竟是什么原因?
FUNCTION get_cbk_values ( TC_CODE IN NUMBER,
MERCHANT_DOM IN VARCHAR2,
MERCHANT_GROUP IN VARCHAR2,
MCC IN VARCHAR2,
COUNTRY IN VARCHAR2,
RATE OUT NUMBER,
FIX OUT NUMBER)
RETURN NUMBER IS
Response NUMBER:=1;
CURSOR cur_cbk_param IS SELECT CBA_RATE, CBA_FIX
FROM cbk_prog_assign_rule WHERE
CBA_TCO = TC_CODE
AND CBA_DOM_CODE = MERCHANT_DOM
AND CBA_BMG_CODE = MERCHANT_GROUP
AND CBA_MCC_CODE = MCC
AND CBA_MER_COUN_CODE = COUNTRY;
BEGIN
LOOP
FETCH cur_cbk_param into RATE, FIX;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
Response := 0;
Return(Response);
END;
首先,您需要从“CREATE OR REPLACE FUNCTION”开始,而不仅仅是“FUNCTION”。其次,在循环访问并获取结果之前,您需要“打开”您的光标。第三,你需要'退出'循环'WHEN cur_cbk_param%NOTFOUND'。第四,像这样的游标循环不会抛出“NO_DATA_FOUND”异常。第五,除非出现异常,否则你的函数不会“返回”一个值。您必须在所有情况下返回一个值。 –
要有效诊断出发生的情况,您必须提供说明以创建表cbk_pro_assing_rule。一些示例数据将会有所帮助。 –
[Oracle错误:ORA-00900:无效SQL语句]的可能重复(https://stackoverflow.com/questions/35946606/oracle-error-ora-00900-invalid-sql-statement) –