"程序已成功完成",但未显示输出,即使它应返回值

时间:2017-06-21 22:17:10

标签: oracle stored-procedures in-clause

我在SQL Developer(Oracle)中创建了一个存储过程:

CREATE OR REPLACE Procedure SP_test
    (Identificadores IN varchar,
     separador IN varchar,
     codigo IN char,
     resultSet out sys_refcursor)
AS
BEGIN
    open resultSet for
        SELECT DISTINCT 
            (tb.CODIGO||separador||tb.NOMBRE) AS Campo
            FROM TABLA tb
            WHERE 
                tb.CODIGO = codigo 
                and concat(tb.IDENTIFICADOR,tb.TECLA) in (Identificadores);
                -- and concat(tb.IDENTIFICADOR,tb.TECLA) in ('FR45');
END;
/

执行存储过程时出现问题,因为结果是:"过程成功完成",但不显示任何数据。相反,如果您只更改Identifiers变量中的WHERE子句的值(硬编码值,如在注释行中),它​​会返回所有对应的行。如果你传递相同的值,我不明白xq参数不起作用。所以我执行程序:

set serveroutput on;
variable rs refcursor;
exec SP_test('FR45','|', '1',:rs);
print rs;

任何其他参数都没有错误,虽然我尝试过只发送" FR45"作为参数标识符,应用程序可以发送由","分隔的代码列表。 (从那里导入使用IN而不是简单的EQUAL)。我已经尝试过使用" instr()"而不是IN甚至创建视图......什么都没有。

超过4天我无法找到解决方案:(请...我知道应该做什么,以便程序识别IN子句中的Identifiers参数并返回我的数据列需要?:(

PS我在SQL-Server中使用了相同的程序,它运行得很完美..

0 个答案:

没有答案