使用 'call' 函数从 P/L SQL 脚本 Oracle 中调用过程

Calling Procedure with 'call' function from within P/L SQL Script Oracle

我无法在 Oracle 数据库中 运行 这个简单的 if/then 语句。 (我认为这是 10.x 但不确定,似乎是我 sql 技能的问题而不是数据库版本)。

你能帮我弄清楚如何 运行 这个简单的过程 - email_table_copy() - 仅当 table 时发送 table 的 csv 副本里面有数据吗?

我必须将 'call' 与 email_table_copy 程序一起使用,看来这就是问题所在。

非常感谢您的帮助。

DECLARE
    ncount   NUMBER(10);
    v_sql    LONG;
BEGIN
    SELECT
        COUNT(person_id)
    INTO ncount
    FROM
        test_conditional;

    IF ( ncount > 0 ) THEN
        v_sql := 'call email_table_function(''owner'', ''test_conditional'', ''csv'', ''email@email.com''
);';
        EXECUTE IMMEDIATE v_sql; 
    END IF;

END;

只需从您的 v_sql 中删除 ;:

DECLARE
    ncount   NUMBER(10);
    v_sql    LONG;
BEGIN
    SELECT
        COUNT(person_id)
    INTO ncount
    FROM
        test_conditional;

    IF ( ncount > 0 ) THEN
        v_sql := q'[
           call email_table_function('owner', 'test_conditional', 'csv', 'tyler.hahn@wpr.org')
        ]';
        EXECUTE IMMEDIATE v_sql; 
    END IF;

END;

另外,如您所见,我将您的文字稍微修改为 q-literal 以使其更具可读性。

简单示例:

begin
  execute immediate q'[
     call dbms_output.put_line('Test string')
  ]';
end;
/