79632480

Date: 2025-05-21 17:22:33
Score: 2
Natty:
Report link

Cannot comment yet, but this is an extended version of what @greg p's query above. Might need to add the other fields if using different variable types/languages/etc.

CREATE OR REPLACE PROCEDURE EDW.PROC.GET_HUMAN_READABLE_PROCEDURE("P_FULLY_QUALIFIED_PROCEDURE_NAME" TEXT)
RETURNS TEXT 
LANGUAGE SQL
EXECUTE AS OWNER
AS 
DECLARE 
    final_ddl TEXT; 
    
BEGIN
    let db TEXT:= (split_part(P_FULLY_QUALIFIED_PROCEDURE_NAME,'.',1));
    let schema_ TEXT:=(split_part(P_FULLY_QUALIFIED_PROCEDURE_NAME,'.',2));
    let proc_name TEXT:=(split_part(P_FULLY_QUALIFIED_PROCEDURE_NAME,'.',3));
    
    let info_schema_table TEXT:=(CONCAT(:db, UPPER('.information_schema.procedures')));

    SELECT
        'CREATE OR REPLACE PROCEDURE '||:P_FULLY_QUALIFIED_PROCEDURE_NAME||ARGUMENT_SIGNATURE||CHAR(13)
        ||'RETURNS '||DATA_TYPE||CHAR(13)
        ||'LANGUAGE '||PROCEDURE_LANGUAGE||CHAR(13)
        ||'EXECUTE AS OWNER'||CHAR(13)
        ||'AS '||CHAR(13)||PROCEDURE_DEFINITION||';'
        
    INTO :final_ddl
    FROM identifier(:info_schema_table) 
    WHERE PROCEDURE_SCHEMA=:schema_ 
        AND PROCEDURE_NAME=:proc_name;

    RETURN :final_ddl;
END;
Reasons:
  • RegEx Blacklisted phrase (1): Cannot comment
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @greg
  • Starts with a question (0.5): Cannot
  • Low reputation (1):
Posted by: dmarkha1