SET VERIFY OFF FEEDBACK OFF HEADING OFF ECHO ON
SET SERVEROUTPUT ON
-- Capture argument or default to empty string (no prompt)
COLUMN p_flag_col NEW_VALUE p_flag
SELECT NVL('&1','') AS p_flag_col FROM dual;
-- Conditionally create functions
BEGIN
IF UPPER('&p_flag') = 'Y' THEN
DBMS_OUTPUT.PUT_LINE('Flag is Y — creating functions...');
EXECUTE IMMEDIATE '
CREATE OR REPLACE FUNCTION func1 RETURN VARCHAR2 IS
BEGIN
RETURN ''Func1'';
END;';
EXECUTE IMMEDIATE '
CREATE OR REPLACE FUNCTION func2 RETURN VARCHAR2 IS
BEGIN
RETURN ''Func2'';
END;';
EXECUTE IMMEDIATE '
CREATE OR REPLACE FUNCTION func3 RETURN VARCHAR2 IS
BEGIN
RETURN ''Func3'';
END;';
EXECUTE IMMEDIATE '
CREATE OR REPLACE FUNCTION func4 RETURN VARCHAR2 IS
BEGIN
RETURN ''Func4'';
END;';
EXECUTE IMMEDIATE '
CREATE OR REPLACE FUNCTION func5 RETURN VARCHAR2 IS
BEGIN
RETURN ''Func5'';
END;';
DBMS_OUTPUT.PUT_LINE('All requested functions created successfully.');
ELSE
DBMS_OUTPUT.PUT_LINE('Flag is not Y — skipping function creation.');
END IF;
END;
/
-- Only describe func2 if flag = Y
COLUMN dummy NEW_VALUE dummy
SELECT CASE WHEN UPPER('&p_flag') = 'Y' THEN 1 ELSE 0 END AS dummy FROM dual;
-- SQL*Plus substitution: only DESC func2 if dummy=1
-- This is a simple trick using substitution variable
DEFINE do_desc = '&dummy'
-- If do_desc = 1, DESC func2, else nothing
-- SQL*Plus does not support IF, so we use the host script to check or just run DESC safely
PROMPT
PROMPT Description of func2 (only if flag is Y):
PROMPT --------------------------------------
-- Only attempt DESC if &do_desc = 1
-- In practice, just run DESC func2; it exists only if flag=Y
DESC func2
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)