Gostaria de saber se existe alguma outra forma de criar esse sql dinamico sem que eu tenha que declarar as variaves no USING.
declare
p_owner varchar2(10):= 'PO';
P_VENDOR NUMBER:= 10;
P_VENDOR_SITE NUMBER := 11;
p_region VARCHAR2(10) := 'AMER';
v_headers_attrib1 VARCHAR2(10) := 'TESTE1';
v_headers_attrib2 VARCHAR2(10) := 'TESTE2';
v_user_id NUMBER := 8555;
v_user_id1 NUMBER ;
V_CONT varchar2(9):= 'AMER';
P_HEADER NUMBER := 107;
begin
--select po_headers_s.nextval
-- into v_user_id1
-- from dual;
EXECUTE IMMEDIATE
('UPDATE '||p_owner||'.PO_HEADERS_ALL'||
' SET VENDOR_ID = 11'||--P_VENDOR||
' ,VENDOR_SITE_ID = '||P_VENDOR_SITE||
' ,ATTRIBUTE1 = DECODE(:1,:2,:3,NULL)'||
' ,ATTRIBUTE2 = DECODE(:4,:5,:6,NULL)'||
-- ' ,SUCCESS_STATUS = :7'||
' ,CREATION_DATE = SYSDATE'||
' ,CREATED_BY = '||v_user_id||
' ,LAST_UPDATE_DATE = SYSDATE'||
' ,LAST_UPDATED_BY = '||v_user_id||
' ,attribute3 = :7 '||
' WHERE PO_HEADER_ID = '||P_HEADER)
USING p_region,V_CONT,v_headers_attrib1,
p_region,V_CONT,v_headers_attrib2,'y';--,v_user_id;
--SELECT * FROM PO_HEADERS_ALL WHERE PO_HEADER_ID = 107
--SELECT DECODE('AMER','AMER','TESTE',NULL) FROM DUAL
--select po_headers_all.nextval from dual
--po_headers_s
end;