如何在没有错误的情况下将Clob传递给系统rpocedure?
我正试图通过
CALL SYS.GET_PROCEDURE_OBJECTS(CREATE PROCEDURE "IA_ATP"."ia_xsjob.xsjob_procedures_folder::atp_procedure" ( )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
AS BEGIN
DROP TABLE IA_ATP.ATP;
CREATE COLUMN TABLE IA_ATP.ATP AS (SELECT ATP_VIEW.*, UTCTOLOCAL(CURRENT_UTCTIMESTAMP,'EST') AS CREATE_TS FROM IA_ATP.ATP_VIEW WHERE
OPEN_PRICE_REQUESTS <>0
OR TOTAL_ON_HAND <> 0
OR OPEN_CUSTOMER_ORDERS <> 0
OR OPEN_CUSTOMER_DELIVERIES <> 0
OR OPEN_OUTBOUND_STOS <> 0
OR ATP <> 0
OR NEGATIVE_ATP <> 0
OR BLOCK_STOCK <> 0
);END;
答案 0 :(得分:1)
过程"SYS"."GET_PROCEDURE_OBJECTS"
尚未被记录用于一般用途。
但是我设法从SQL脚本上下文成功调用了它:
具有过程定义:
create procedure pr_test (in i int)
as
begin
declare a, b int;
select :i into a from dummy;
select count(*) into b from objects;
select :a, :b, :a*:b from dummy;
end;
call pr_test(10);
将此源代码分配给CLOB
变量,并使用以下变量调用系统过程:
do begin
declare proc_source clob;
proc_source :='create procedure pr_test (in i int)
as
begin
declare a, b int;
select :i into a from dummy;
select count(*) into b from objects;
select :a, :b, :a*:b from dummy;
end;';
CALL SYS.GET_PROCEDURE_OBJECTS(:proc_source);
end;
从系统视图PROCEDURE_OBJECTS
获取采购结果:
select * from procedure_objects;
SCHEMA_NAME PROCEDURE_NAME OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE_ID OBJECT_TYPE START_POSITION END_POSITION
SYSTEM PR_TEST PUBLIC DUMMY 128 SYNONYM 100 105
SYSTEM PR_TEST SYS DUMMY 32 TABLE 100 105
SYSTEM PR_TEST PUBLIC OBJECTS 128 SYNONYM 141 148
SYSTEM PR_TEST SYS OBJECTS 31 VIEW 141 148
SYSTEM PR_TEST PUBLIC DUMMY 128 SYNONYM 189 194
SYSTEM PR_TEST SYS DUMMY 32 TABLE 189 194