gpt4 book ai didi

oracle - ORA-01747:无效的user.table.column,table.column或列规范

转载 作者:行者123 更新时间:2023-12-04 01:18:34 24 4
gpt4 key购买 nike

在循环中调用立即执行时,获取上述错误

Update CustomersPriceGroups set  1AO00=:disc  Where cuno=:cuno
Parameters: disc=66 cuno=000974
Update CustomersPriceGroups set 1AP00=:disc Where cuno=:cuno
Parameters: disc=70.5 cuno=000974
Update CustomersPriceGroups set 1AQ00=:disc Where cuno=:cuno
Parameters: disc=66 cuno=000974
Update CustomersPriceGroups set 1ZA00=:disc Where cuno=:cuno
Parameters: disc=60 cuno=000974


这是什么意思 ?

这是代码片段

    c:=PriceWorx.frcPriceListCustomers('020','221');
LOOP
fetch c into comno,cuno,nama,cpls;
exit when c%notfound;
dbms_output.put_Line(cuno);
g:=priceWorx.frcPriceListItemGroups('020','221');
d:=priceworx.frcCustomerDiscounts('020','221',cuno);
loop
fetch g into comno,cpgs,n;
fetch d into comno,cpls,cuno,cpgs,stdt,tdat,qanp,disc,src;
--dbms_output.put(chr(9)||cpgs);
sQ:='Update saap.CustomersPriceGroups set "'|| trim(cpgs)||'"=:disc '
|| ' Where cuno=:cuno';
execute immediate sQ using disc,cuno;
commit;
dbms_output.put_line( sQ );
dbms_output.put_line( chr(9)||'Parameters: disc='|| disc||' cuno='||cuno);
exit when g%notfound;
end loop;
close g;
close d;
end loop;

最佳答案

未加引号的标识符必须以字母字符开头(请参见rule 6 here)。您正在尝试为名称以数字1AO001AP00等开头的列分配值。

没有看到CustomersPriceGroups的表定义,我们不知道它是否具有带有这些名称的列。如果是这样,则必须已将它们创建为带引号的标识符。如果是这样,您将不得不在所有地方都用引号引用它们,这是不理想的-使代码更难阅读,使这样的错误更容易出现,并且很难发现错误所在。甚至Oracle在同一页面上也说:


注意:Oracle不建议对数据库使用带引号的标识符
对象名称。这些带引号的标识符被SQL * Plus接受,但是
当使用其他管理数据库的工具时,它们可能无效
对象。


在您的代码中,分配sQ时似乎使用了引号,但显示的输出却没有。但它也没有saap.模式标识符。那可能是因为您没有运行您认为的代码版本,但可能只是
如果您重新输入数据而不是粘贴数据,则会丢失-您也不会显示c.cuno的早期输出。但是,也有可能列名称的大小写错误。

如果execute引发错误,那么您不会在循环中看到该命令正在执行的时间,因为调试是在它之后进行的-您看到的是成功的值,而不是被破坏的值。您需要检查函数返回的所有值。我怀疑 返回的 g值实际上不是有效的列名。

正如@nineside所说,显示更多信息,尤其是完整的异常消息,将有助于识别出问题所在。

关于oracle - ORA-01747:无效的user.table.column,table.column或列规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9459204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com