Oracle SELECT查询

时间:2015-06-11 17:15:15

标签: sql oracle

很抱歉,如果问题听起来很基本,但我无法找到原因。

我有一个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.....;

对此的任何帮助或指示都将不胜感激。

1 个答案:

答案 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