Alk*_*y29 1 sql oracle plsql stored-procedures
我有一个具有立即执行语句的过程。在该execute立即语句中调用具有两个out参数的过程。我在尝试获取那些要在调用execute立即语句的过程中使用的参数时遇到麻烦。
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;
Run Code Online (Sandbox Code Playgroud)
out参数为p_plan_id
和pi_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;
Run Code Online (Sandbox Code Playgroud)
由于Oracle 12c中还可以获取PL / SQL数据类型(如RECORDS
,BOOLEAN
)为动态SQL。在早期版本的你在哪里限于SQL数据类型只(如NUMBER
,VARCHAR2
等)
归档时间: |
|
查看次数: |
6249 次 |
最近记录: |