【发布时间】:2015-08-28 10:13:25
【问题描述】:
我需要创建一个存储过程,我必须从选择语句中创建一个表,我必须在其中插入参数。 这是我的查询:
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 指令,我也有同样的错误。我该如何管理它?
谢谢
【问题讨论】:
-
您没有将a string argument 传递给
execute immediate。P_RC应该包含什么内容?无论如何,您为什么要在运行时创建表?还是在其他表中复制数据的表(然后会过时)?
标签: sql oracle stored-procedures plsql