我需要创建一个存储过程,至此我必须从select语句中创建一个表,我必须在其中插入参数。 这里是我的查询:从创建和选择语句创建存储过程
CREATE TABLE DBL_JW AS
SELECT * FROM (
SELECT m.IDM,
m2.IDM AS dups_key
FROM members_tbl m
LEFT OUTER JOIN members_tbl m2
ON (m.IDM != m2.IDM
AND m.DBIRTH = m2.DBIRTH
AND utl_match.jaro_winkler_similarity(m.SNAME,m2.SNAME) > 90
AND utl_match.jaro_winkler_similarity(m.FNAME,m2.FNAME) > 95))
Where dups_key IS NOT NULL;
我试图写这个存储过程:
CREATE OR REPLACE PROCEDURE JW_DBL_POT
(
P_SNAME IN NUMBER
, P_FNAME IN NUMBER
, P_RC OUT SYS_REFCURSOR
) AS
BEGIN
OPEN P_RC
EXECUTE IMMEDIATE
CREATE TABLE DBL_JW AS
SELECT * FROM (
SELECT m.IDM,
m2.IDM AS dups_key
FROM members_tbl m
LEFT OUTER JOIN members_tbl m2
ON (m.IDM != m2.IDM
AND m.DBIRTH = m2.DBIRTH
AND utl_match.jaro_winkler_similarity(m.SNAME,m2.SNAME) > P_SNAME
AND utl_match.jaro_winkler_similarity(m.FNAME,m2.FNAME) > P_FNAME))
Where dups_key IS NOT NULL;
END JW_DBL_POT;
我面对这样的错误: - PLS-00103:出现符号“CREATE” 即使删除了EXECUTE IMMEDIATE
指令,我也有同样的错误。我如何管理它? Thx
您没有将[字符串参数](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/executeimmediate_statement.htm#CJACGJJG)传递给'immediate immediate'。什么应该进入'P_RC'?为什么你要在运行时创建一个表;或者是在其他表中复制数据的表(然后会过时)? –