【发布时间】:2018-03-29 20:06:41
【问题描述】:
我正在尝试在我的 sql 代码中存储字符串并使用变量进行连接,但我不断收到错误消息。这是我尝试过的:
DECLARE
ENV VARCHAR(9999);
MV VARCHAR(999);
MVNAME VARCHAR(999) := 'TEST2';
BEGIN
-- GET ENVIRONMENT
SELECT sys_context('USERENV','DB_NAME')
INTO ENV
FROM DUAL;
MV := 'CREATE MATERIALIZED VIEW' || MVNAME ||
'COMPRESS
NOLOGGING
PARTITION BY HASH (DATAID)
PARTITIONS 16
PARALLEL
BUILD IMMEDIATE
USING INDEX
REFRESH
NEXT trunc(SYSDATE, ''hh'') + 1/24
FAST
WITH ROWID
USING DEFAULT LOCAL ROLLBACK SEGMENT
ENABLE QUERY REWRITE AS ';
IF ENV = 'CSTMP' THEN
execute immediate MV || 'SELECT count(m.work_ownerid)
FROM MV_WWORK_SHRUNK m
WHERE WORK_STATUS = 2';
ELSIF ENV = 'PROD' THEN
execute immediate MV || 'SELECT count(m.work_ownerid)
FROM MV_WWORK_SHRUNK m
WHERE WORK_STATUS = 2';
ELSE
execute immediate MV || 'SELECT count(m.work_ownerid)
FROM MV_WWORK_SHRUNK m
WHERE WORK_STATUS = 2';
END IF;
END;
【问题讨论】:
-
一个明显的观察结果是结果字符串中缺少空格。
-
我不确定我理解这意味着什么。
-
在 COMPRESS 之前添加一个空格。也是在 VIEW 之后。
-
哦,我明白了,连接之间没有空格
-
I downvoted because lacking an MCVE makes it hard to answer 并且因为您没有提供错误消息并且因为您没有使用@Littlefoot 提出的 dbms_output 方法