PLSQL遇到了符号“quot;是”;当预期以下情况之一时
嗨,我正在尝试使用PLSQL创建一个汇总统计表。我是PLSQL的新手。我一直在犯这个错误。 预期出现下列情况之一时遇到符号“是” 下面是我的代码PLSQL遇到了符号“quot;是”;当预期以下情况之一时,plsql,Plsql,嗨,我正在尝试使用PLSQL创建一个汇总统计表。我是PLSQL的新手。我一直在犯这个错误。 预期出现下列情况之一时遇到符号“是” 下面是我的代码 DECLARE AGE NUMBER; CAMPAIGN NUMBER; PDAYS NUMBER; PREVIOUS NUMBER; POUTCOME NUMBER; EMP_VAR_RATE NUMBER; CONS_PRICE_IDX NUMBER; CONS_CONF_IDX NUMBER; EURIBOR3M NUMBER; Y VARCHA
DECLARE
AGE NUMBER;
CAMPAIGN NUMBER;
PDAYS NUMBER;
PREVIOUS NUMBER;
POUTCOME NUMBER;
EMP_VAR_RATE NUMBER;
CONS_PRICE_IDX NUMBER;
CONS_CONF_IDX NUMBER;
EURIBOR3M NUMBER;
Y VARCHAR;
BEGIN
EXECUTE IMMEDIATE ('
CREATE TABLE SUMMARY_STAT
AS
SELECT
ROUND(AVG(AGE)) AS AVERAGE_AGE
,ROUND(AVG(CAMPAIGN)) AS AVERAGE_CONTACTS_MADE
,ROUND(AVG(PDAYS)) AS NO_DAYS_PASSED
,ROUND(AVG(PREVIOUS)) AS AVERAGE_PREVIOUS_CONTACTS_MADE
,ROUND(AVG(EMP_VAR_RATE)) AS AVERAGE_EMPLOYEE_VARIATION
,ROUND(AVG(CONS_PRICE_IDX)) AS AVERAGE_CONSUMER_PRICE_INDEX
,ROUND(AVG(CONS_CONF_IDX)) AS AVERAGE_CONSUMER_CONFIDENCE_INDEX
,ROUND(AVG(EURIBOR3M)) AS AVERAGE_EURIBOR
,COUNT(CASE WHEN Y = 'yes' THEN 1 end) AS NUMBER_CUSTOMERS_TOOK_DEPOSIT
,COUNT(CASE WHEN Y = 'no' THEN 1 end) AS NUMBER_CUSTOMERS_DIDNT_TAKE_DEPOSIT
FROM BANK_DATA
');
END;
问题是在较大的字符串中有单引号。不幸的是,从解释器的角度来看,您的字符串处于“创建…”。。。当Y='是一个字符串,下一个标记是解释器不理解的单词“yes”
您有两种选择:
BEGIN
EXECUTE IMMEDIATE (q'[
CREATE TABLE SUMMARY_STAT
AS
SELECT
ROUND(AVG(AGE)) AS AVERAGE_AGE
,ROUND(AVG(CAMPAIGN)) AS AVERAGE_CONTACTS_MADE
,ROUND(AVG(PDAYS)) AS NO_DAYS_PASSED
,ROUND(AVG(PREVIOUS)) AS AVERAGE_PREVIOUS_CONTACTS_MADE
,ROUND(AVG(EMP_VAR_RATE)) AS AVERAGE_EMPLOYEE_VARIATION
,ROUND(AVG(CONS_PRICE_IDX)) AS AVERAGE_CONSUMER_PRICE_INDEX
,ROUND(AVG(CONS_CONF_IDX)) AS AVERAGE_CONSUMER_CONFIDENCE_INDEX
,ROUND(AVG(EURIBOR3M)) AS AVERAGE_EURIBOR
,COUNT(CASE WHEN Y = 'yes' THEN 1 end) AS NUMBER_CUSTOMERS_TOOK_DEPOSIT
,COUNT(CASE WHEN Y = 'no' THEN 1 end) AS NUMBER_CUSTOMERS_DIDNT_TAKE_DEPOSIT
FROM BANK_DATA
]');
END;
问题是在较大的字符串中有单引号。不幸的是,从解释器的角度来看,您的字符串处于“创建…”。。。当Y='是一个字符串,下一个标记是解释器不理解的单词“yes”
您有两种选择:
BEGIN
EXECUTE IMMEDIATE (q'[
CREATE TABLE SUMMARY_STAT
AS
SELECT
ROUND(AVG(AGE)) AS AVERAGE_AGE
,ROUND(AVG(CAMPAIGN)) AS AVERAGE_CONTACTS_MADE
,ROUND(AVG(PDAYS)) AS NO_DAYS_PASSED
,ROUND(AVG(PREVIOUS)) AS AVERAGE_PREVIOUS_CONTACTS_MADE
,ROUND(AVG(EMP_VAR_RATE)) AS AVERAGE_EMPLOYEE_VARIATION
,ROUND(AVG(CONS_PRICE_IDX)) AS AVERAGE_CONSUMER_PRICE_INDEX
,ROUND(AVG(CONS_CONF_IDX)) AS AVERAGE_CONSUMER_CONFIDENCE_INDEX
,ROUND(AVG(EURIBOR3M)) AS AVERAGE_EURIBOR
,COUNT(CASE WHEN Y = 'yes' THEN 1 end) AS NUMBER_CUSTOMERS_TOOK_DEPOSIT
,COUNT(CASE WHEN Y = 'no' THEN 1 end) AS NUMBER_CUSTOMERS_DIDNT_TAKE_DEPOSIT
FROM BANK_DATA
]');
END;