从Oracle P/L SQL脚本中使用“call”函数调用过程
我无法在oracle数据库中运行这个简单的if/then语句。我认为它是10.x,但不确定,这似乎是我sql技能的问题,而不是db版本的问题 你能帮我弄清楚如何运行这个简单的过程-电子邮件\u table\u copy-仅当表中有数据时才发送表的csv副本吗 我必须在电子邮件\u表\u复制过程中使用“呼叫”,似乎这就是问题发生的地方 我非常感谢你的帮助从Oracle P/L SQL脚本中使用“call”函数调用过程,sql,oracle,function,stored-procedures,Sql,Oracle,Function,Stored Procedures,我无法在oracle数据库中运行这个简单的if/then语句。我认为它是10.x,但不确定,这似乎是我sql技能的问题,而不是db版本的问题 你能帮我弄清楚如何运行这个简单的过程-电子邮件\u table\u copy-仅当表中有数据时才发送表的csv副本吗 我必须在电子邮件\u表\u复制过程中使用“呼叫”,似乎这就是问题发生的地方 我非常感谢你的帮助 DECLARE ncount NUMBER(10); v_sql LONG; BEGIN SELECT
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:
声明
n计数10;
v_sql LONG;
开始
选择
COUNTperson\u id
入帐
从…起
有条件的测试;
如果n计数>0,则
v_sql:=q'[
调用email_table_函数'owner','test_conditional','csv','tyler。hahn@wpr.org'
]';
执行即时v_sql;
如果结束;
终止
正如你所看到的,我对你的文字做了一些修改,使它更具可读性
简单的例子:
开始
立即执行q'[
调用dbms_output.put_行'Test string'
]';
终止
/
只需删除;从您的v_sql:
声明
n计数10;
v_sql LONG;
开始
选择
COUNTperson\u id
入帐
从…起
有条件的测试;
如果n计数>0,则
v_sql:=q'[
调用email_table_函数'owner','test_conditional','csv','tyler。hahn@wpr.org'
]';
执行即时v_sql;
如果结束;
终止
正如你所看到的,我对你的文字做了一些修改,使它更具可读性
简单的例子:
开始
立即执行q'[
调用dbms_output.put_行'Test string'
]';
终止
/
每日提示:不要使用长数据类型,如果需要,请使用VARCHAR232767或CLOB。状态:不要创建具有长列的表。改用LOB列CLOB、NCLOB、BLOB。只有在向后兼容的情况下才支持长列。强调:在代码中避免它们也是一个好主意,如果需要的话,它们是非常难以工作的。每日提示:不要使用长数据类型,如果需要,使用VARCHAR232767或CLOB。状态:不要创建具有长列的表。改用LOB列CLOB、NCLOB、BLOB。只有在向后兼容的情况下才支持长列。在代码中避免它们也是一个好主意,如果你需要的话,它们是非常难以工作的。谢谢你,Sayan-这就解决了它!我很惊讶它竟然是一个放错地方的分号。我很高兴了解q-literal,它是我工具箱中一个非常好的操作符/工具。我还是SQL新手,非常感谢您的指导。谢谢您,Sayan-这就解决了它!我很惊讶它竟然是一个放错地方的分号。我很高兴了解q-literal,它是我工具箱中一个非常好的操作符/工具。我还是SQL新手,非常感谢您的指导。