存储过程中的Oracle查询
Oracle query in stored procedure
我正在使用存储过程,我有一个查询应该带一个特定的 id
SELECT * into SID_INCOMING FROM
(
SELECT SID
FROM TBL_INCOMING
WHERE XKEY = ''||nro_tarjetatmp||'_'||fecha_hr_trasacfinal||'_'||datos_referencia_adquirentetmp||''
AND CODIGO_AUTORIZACION IN(''||codigo_autorizacion||'')
AND MIT IN(''||mit||'')
ORDER BY SID ASC
) WHERE ROWNUM <= 1;
变量值有序
- 4946110112060005_200116_74064350165099586691985
- 536018
- 05
当它执行时我得到这个结果
但是当我使用相同的参数执行相同的查询时,我得到了这个结果
这是我应该通过手术得到的结果,为什么会这样?
在我看来,sp没有考虑第二个和第三个参数
欢迎任何帮助,谢谢
您需要使用别名来避免 AND MIT IN(''||mit||'')
的问题:此谓词将 MIT 列与其自身进行比较。
所以只需添加别名:
SELECT * into SID_INCOMING FROM
(
SELECT SID
FROM TBL_INCOMING ti
WHERE ti.XKEY = ''||your_proc_name.nro_tarjetatmp||'_'||your_proc_name.fecha_hr_trasacfinal||'_'||your_proc_name.datos_referencia_adquirentetmp||''
AND ti.CODIGO_AUTORIZACION IN(''||your_proc_name.codigo_autorizacion||'')
AND ti.MIT IN(''||your_proc_name.mit||'')
ORDER BY ti.SID ASC
) WHERE ROWNUM <= 1;
还有为什么要加上''||
?它不会向您的变量中添加任何内容,但会在它们不是 varchar2/char 数据类型的情况下强制进行隐式类型转换。
你能展示“describe TBL_INCOMING”的结果吗?因为看起来 CODIGO_AUTORIZACION 是数字数据类型,MIT 可能也是数字。
我正在使用存储过程,我有一个查询应该带一个特定的 id
SELECT * into SID_INCOMING FROM
(
SELECT SID
FROM TBL_INCOMING
WHERE XKEY = ''||nro_tarjetatmp||'_'||fecha_hr_trasacfinal||'_'||datos_referencia_adquirentetmp||''
AND CODIGO_AUTORIZACION IN(''||codigo_autorizacion||'')
AND MIT IN(''||mit||'')
ORDER BY SID ASC
) WHERE ROWNUM <= 1;
变量值有序
- 4946110112060005_200116_74064350165099586691985
- 536018
- 05
当它执行时我得到这个结果
但是当我使用相同的参数执行相同的查询时,我得到了这个结果
这是我应该通过手术得到的结果,为什么会这样? 在我看来,sp没有考虑第二个和第三个参数
欢迎任何帮助,谢谢
您需要使用别名来避免 AND MIT IN(''||mit||'')
的问题:此谓词将 MIT 列与其自身进行比较。
所以只需添加别名:
SELECT * into SID_INCOMING FROM
(
SELECT SID
FROM TBL_INCOMING ti
WHERE ti.XKEY = ''||your_proc_name.nro_tarjetatmp||'_'||your_proc_name.fecha_hr_trasacfinal||'_'||your_proc_name.datos_referencia_adquirentetmp||''
AND ti.CODIGO_AUTORIZACION IN(''||your_proc_name.codigo_autorizacion||'')
AND ti.MIT IN(''||your_proc_name.mit||'')
ORDER BY ti.SID ASC
) WHERE ROWNUM <= 1;
还有为什么要加上''||
?它不会向您的变量中添加任何内容,但会在它们不是 varchar2/char 数据类型的情况下强制进行隐式类型转换。
你能展示“describe TBL_INCOMING”的结果吗?因为看起来 CODIGO_AUTORIZACION 是数字数据类型,MIT 可能也是数字。