将表名作为参数传递时,PL / SQL函数不起作用

尼山斯·劳伦斯(Nishanth Lawrence)

以下是我的职责,

create or replace 
FUNCTION checkXML
 (idx in number , tblname in varchar2) 
 return xmltype 
is 
required_xml XMLTYPE;
saved_hash_value raw(50);
current_hash_value raw(50);
xml_not_equal EXCEPTION;

begin
execute immediate 'select checkfield , my_hash(extract(xmlcol,'/')) , xmlcol into saved_hash_value , 
                   current_hash_value , required_xml  from ' || tblname || '  where indexid =' || idx ;


if saved_hash_value = current_hash_value then
  return required_xml;
else
  RAISE xml_not_equal;  
end if;

end;

我想知道哪里出了问题。

正在接收的错误消息是,

ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at "SYSTEM.CHECKXML", line 11
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    
*Action:
亚历克斯·普尔

您在SQL语句中未转义单引号,因此斜杠/被解释为除号,而不是字符串的一部分。您需要添加转义符:

my_hash(extract(xmlcol, ''/''))

您还应该idx真正使用绑定变量,而into对于动态SQL来说,您的位置是错误的:

execute immediate 'select checkfield , my_hash(extract(xmlcol, ''/'')) ,
  xmlcol from ' || tblname || ' where indexed = :idx'
into saved_hash_value , current_hash_value , required_xml
using idx;

同样不确定您要尝试实现的异常。您已经在本地声明它,然后尝试提高它,但是我认为这只会生成未处理的用户定义的异常错误。您可能只想使用自己的错误号和消息引发应用程序错误,例如:

  ...
  if saved_hash_value != current_hash_value then
    raise_application_error(-20001, 'XML hash is not correct');  
  end if;
  return required_xml;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pl / sql过程不允许将表名/视图名作为参数传递

来自分类Dev

在悬停时将函数作为参数传递不起作用

来自分类Dev

当var作为参数传递时,javascript函数不起作用

来自分类Dev

将引用作为函数参数传递不起作用

来自分类Dev

将参数传递给addEventListener时,函数不起作用

来自分类Dev

将列名作为参数传递给R函数

来自分类Dev

将列名作为函数参数传递-R

来自分类Dev

传递参数函数不起作用

来自分类Dev

将SQL登录名作为参数传递

来自分类Dev

将SQL登录名作为参数传递

来自分类Dev

在Angular Directive中将函数作为参数传递不起作用

来自分类Dev

传递两个参数时函数不起作用

来自分类Dev

将typedef函数指针作为参数传递在Arduino 1.6.5中不起作用

来自分类Dev

将命名范围作为变量传递时,UBound函数不起作用

来自分类Dev

jQuery .on()如果传递的函数不起作用

来自分类Dev

JavaScript函数参数不起作用

来自分类Dev

jQuery $(this)在函数参数中不起作用

来自分类Dev

函数参数php不起作用

来自分类Dev

JavaScript函数参数不起作用

来自分类Dev

C ++默认函数参数不起作用

来自分类Dev

带参数的Python函数不起作用

来自分类Dev

将图标作为参数传递不起作用-Google Maps

来自分类Dev

PL / SQL sysdate格式不起作用?

来自分类Dev

SQL选择If语句不起作用,但作为简单函数运行而没有if语句

来自分类Dev

以表名作为参数的动态 SQL

来自分类Dev

传递String []作为参数不起作用

来自分类Dev

传递String []作为参数不起作用

来自分类Dev

函数参数作为文本不起作用

来自分类Dev

C++ 类作为函数的参数不起作用