PLSQL在预期以下情况之一时遇到符号“ YES”

时间:2019-12-14 00:20:56

标签: plsql

嗨,我正在尝试使用PLSQL创建摘要统计信息表。我是PLSQL的新手。我不断收到此错误。 遇到以下情况之一时遇到符号“是”

下面是我的代码。

valgrind myprog abc inputFile /home/users/Scrivania/find/try

1 个答案:

答案 0 :(得分:2)

问题是较大的字符串中包含单引号。不幸的是,从解释器的角度来看,您在'Create ... when Y ='时的字符串是一个字符串,下一个标记是解释器无法理解的单词“ yes”。
您有2个选择:

  1. 将较大的字符串内的引号加倍。
  2. 使用替代quote delimiter

使用引号分隔符,您将得到:

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;