Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures PLSQL存储过程返回动态查询的结果_Stored Procedures_Plsql_Dynamic Sql_Database Cursor - Fatal编程技术网

Stored procedures PLSQL存储过程返回动态查询的结果

Stored procedures PLSQL存储过程返回动态查询的结果,stored-procedures,plsql,dynamic-sql,database-cursor,Stored Procedures,Plsql,Dynamic Sql,Database Cursor,我有以下代码,但这不会返回结果行。 当我不使用动态sql时,我可以在游标的帮助下返回结果,但它不会返回任何内容 CREATE OR REPLACE PROCEDURE my_db.sp_test ( my_clause in VARCHAR2 ) AS query1 VARCHAR2(5000) DEFAULT 'SELECT my_table.* FROM my_table WHERE 1=1 '; BEGIN if like_clause is not null then

我有以下代码,但这不会返回结果行。 当我不使用动态sql时,我可以在游标的帮助下返回结果,但它不会返回任何内容

CREATE OR REPLACE PROCEDURE my_db.sp_test
(
    my_clause in VARCHAR2
)
AS
     query1 VARCHAR2(5000) DEFAULT 'SELECT my_table.* FROM my_table WHERE 1=1 ';
BEGIN

if like_clause is not null then
    query1 := query1 || my_clause;
else
    query1 := query1 || my_clause;
end if;

EXECUTE IMMEDIATE query1;
END;
/
例如:my_子句参数是'AND my_table.ID IN(106931921068717210630960)'

编辑: 下面的代码返回结果行。我可以从我的.NET应用程序(以及蟾蜍)中读取它们。但是,上面的查询不返回任何内容。 我需要使用动态sql,所以我想使用上面的SP返回相同的结果

CREATE OR REPLACE PROCEDURE PHX_EPI.sp_test2
(
    cursor_ OUT SYS_REFCURSOR
)
AS
BEGIN
    OPEN cursor_ FOR
    SELECT my_table.* FROM my_table;
END;
/

您希望DB如何处理该select?您没有做任何事情来返回行。您需要为动态sql打开ref游标,然后循环返回结果。您需要在调用sp_测试过程的代码中执行此操作。@PavelSmirnov我想从.NET读取此sp的结果。如果没有动态查询,我可以。我更新了我的问题。@Boneist也许你是对的。我正在学习PLSQL。我更新了我的问题。旧代码返回行,但我不知道需要做什么才能获得与动态查询相同的结果。显然,使用动态查询时,是Toad不显示结果。当我尝试使用.NET应用程序时。我和以前一样拿到了。谢谢