我正在尝试动态执行存储过程,因为我基于一个简单的数字获得了其中的一些,所以我创建了另一个过程来执行此操作,但我不断收到问题标题上的错误,这是我的过程:
PROCEDURE P_EXEC_REG(p_Register IN VARCHAR2, p_LineBuff IN VARCHAR2, p_User IN VARCHAR2) IS
l_Procedure VARCHAR2(50);
l_Sentence VARCHAR2(500);
BEGIN
l_Procedure := 'P_REG_' || TRIM(p_Register);
l_Sentence := 'BEGIN CTS.PK_INTEGRATE_MANIFESTO.' || l_Procedure || '(:A, :B); END;';
EXECUTE IMMEDIATE l_Sentence
USING IN p_LineBuff, p_User;
END;
由于我们有数百个程序,使用 if 语句来做这件事很痛苦,希望有人能帮我解决这个问题,另外,我会告诉你我是如何称呼它的:
PROCEDURE P_LOAD_FILE(p_Linebuff IN VARCHAR2, p_User IN VARCHAR2) IS
l_Register VARCHAR2(3);
BEGIN
BEGIN
SELECT SUBSTR(p_Linebuff,1,3)
INTO l_Register
FROM DUAL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
--p_result := false;
NULL;
END;
CTS.PK_INTEGRATE_MANIFESTO.P_EXEC_REG(l_Register, p_Linebuff, p_User);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;