PL/SQL: ORA-00942: 表或视图不存在
Posted
技术标签:
【中文标题】PL/SQL: ORA-00942: 表或视图不存在【英文标题】:PL/SQL: ORA-00942: table or view does not exist 【发布时间】:2012-11-05 17:01:43 【问题描述】:当我尝试运行他的脚本部分时,Oracle 11G 中出现此错误 'PL/SQL: ORA-00942: table or view does not exist'。似乎 select 语句没有从游标中解析变量的名称。需要帮助以确保这可以从游标中读取表名变量。
DECLARE
ITEM_ERROR NUMBER;
CNT_SITE VARCHAR2(46);
CURSOR C_SITEID IS
SELECT OBJECTNAME,ATTRIBUTENAME FROM MAXATTRIBUTE WHERE ATTRIBUTENAME LIKE 'SITE%' GROUP BY OBJECTNAME,ATTRIBUTENAME, COLUMNNAME;
SITEIDRec C_SITEID%RowType;
BEGIN
BEGIN
OPEN C_SITEID;
LOOP
FETCH C_SITEID into SITEIDRec;
EXIT WHEN C_SITEID %NOTFOUND;
BEGIN
SELECT COUNT(SITEID) into CNT_SITE FROM SITEIDRec.OBJECTNAME
WHERE SITEID IN ('COLLEGE NANO SCI ENG-TGCM','FREESCALE-BALAZS','TGCM-GLOBAL FOUNDRIES','INTL RECTIFIER-TGM','TGCM-DMOS5','TGCM-IMFT','TGCM-TRIQUINT','GP-TRIQUINT');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
END;
END LOOP;
--COMMIT;
CLOSE C_SITEID;
--COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
END;
--COMMIT;
EXCEPTION
WHEN OTHERS THEN
MSG_TEXT := SUBSTR(SQLERRM,1,200);
--COMMIT;
raise;
END;
【问题讨论】:
【参考方案1】:我认为您的查询中有FROM TableName
missing,因此它是正确的抱怨。
SELECT COUNT(SITEID) into SITEIDRec.OBJECTNAME
WHERE SITEID IN
('COLLEGE NANO SCI ENG-TGCM','FREESCALE-BALAZS',
'TGCM-GLOBAL FOUNDRIES','INTL RECTIFIER-TGM','TGCM-DMOS5',
'TGCM-IMFT','TGCM-TRIQUINT','GP-TRIQUINT');
请通过添加From TableName
更正您的查询。
编辑:尝试使用EXECUTE IMMEDIATE
,如下所示
EXECUTE IMMEDIATE 'SELECT COUNT(SITEID) into CNT_SITE FROM '
|| SITEIDRec.OBJECTNAME ||
' WHERE SITEID IN (''COLLEGE NANO SCI ENG-TGCM'',''FREESCALE-BALAZS'',
''TGCM-GLOBAL FOUNDRIES'',''INTL RECTIFIER-TGM'',''TGCM-DMOS5'',
''TGCM-IMFT'',''TGCM-TRIQUINT'',''GP-TRIQUINT'')';
【讨论】:
我有它,它似乎是一个错字。添加它之后,即使从光标中获取它,我似乎仍然没有将表名值解析到 select 语句中。 @SwissJura:检查答案中的更新部分是否有帮助。这个想法是创建一个 SQL 字符串并使用EXECUTE IMMEDIATE
(动态查询)运行它
@Ben:虽然我建议它是一个字符串值。已删除,因为它不是必需的。
@SwissJura:我不知道如何,但最后看到了into CNT_SITE
。我刚刚更正了查询。您可以尝试更新后的查询并告诉我吗?
嗨 Yogendra,在这里运行我的简单脚本的这一部分时,我仍然收到“表或视图不存在”错误。当我在 SQl Developer for oracle 中运行时,任何人都可以帮我看看这个问题吗?以上是关于PL/SQL: ORA-00942: 表或视图不存在的主要内容,如果未能解决你的问题,请参考以下文章