很抱歉,如果问题听起来很基本,但我无法找到原因。
我有一个oracle过程,其中调用带有参数的SOAP Web服务。
当我在webservice中对参数进行硬编码并编译并执行该过程时,我得到200 OK响应。此外,当我手动将参数作为IN参数传递给过程并使用存储在webservice中的变量时,我仍然得到200 OK响应。
但是当我在过程中使用select查询从数据库表中检索参数,将其存储在过程中定义的变量中,然后在webservice中使用这些变量时,会出现问题。 Web服务失败,我收到500错误,指示无效参数。
我的第一反应是关于查询结果中的空白字符,因此我为每个查询字段使用了TRIM()函数。但我再次收到500错误回复。
WORKING:
< authentication >
< username >abcde< /username >
< password >abcde< /password >
< /authentication>
不工作:
var_user VARCHAR2(10);
var_pass VARCHAR2(10);
< authentication >
< username >'||var_user||'< /username >
< password >'||var_pass||'< /password>
< /authentication>
select TRIM(username),TRIM(password) into var_user,var_pass from TBL_USER where.....;
对此的任何帮助或指示都将不胜感激。
答案 0 :(得分:0)
我怀疑这是由空格引起的,可能是返回还是任何不可见的字符(/ n,/ r ......)。我使用正则表达式函数删除不需要的字符。 这是一个例子,它将删除制表符和空格。
select 'asdfo'||chr(9)||'dsu iue', regexp_replace('asdfo'||chr(9)||'dsu iue', '['||chr(9)||' ]','') from dual
或者这将删除所有控制字符
select 'asdfo'||chr(9)||'dsu iue', regexp_replace('asdfo'||chr(9)||'dsu iue', '[[:cntrl:] ]','') from dual