gpt4 book ai didi

sql - 使用调用过程的立即执行语句中的输出参数

转载 作者:行者123 更新时间:2023-12-05 09:23:06 32 4
gpt4 key购买 nike

我有一个包含立即执行语句的过程。在该 execute immediate 语句中调用具有两个输出参数的过程。我在尝试获取要在调用立即执行语句的过程中使用的那些输出参数时遇到问题。

execute_stmt := 'DECLARE pi_error_log_rec error_log%ROWTYPE; p_plan_id NUMBER; begin SCHEMA.PACKAGE_NAME.' ||
PROCEDURE || '(' ||
p_audit_log_id || ', ' ||
V_PARAMETER1 || ', ' || '''' ||
V_PARAMETER2 || '''' ||
', p_plan_id, pi_error_log_rec); end;';
execute immediate execute_stmt;

if(pi_error_log_rec.error_text IS NOT NULL) THEN
--do stuff;
ELSE
--do stuff;

out参数为p_plan_idpi_error_log_rec,其余为IN参数。所以我需要获得这两个输出,以便在调用此立即执行的过程中使用。但它没有在变量中设置输出。我是错过了一个步骤还是应该使用不同的方法来使用输出参数?

最佳答案

试试这个:

execute_stmt := 'Begin SCHEMA.PACKAGE_NAME.PROCEDURE(:p_audit_log_id, :V_PARAMETER1, :V_PARAMETER2); END;';
execute immediate execute_stmt USING IN p_audit_log_id, OUT pi_error_log_rec, OUT p_plan_id;

从 Oracle 12c 开始,您还可以将 PL/SQL 数据类型(如 RECORDSBOOLEAN)提取到动态 SQL 中。在早期版本中,您仅限于 SQL 数据类型(如 NUMBERVARCHAR2 等)

关于sql - 使用调用过程的立即执行语句中的输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191230/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com