Stored procedures PLSQL存储过程返回动态查询的结果
我有以下代码,但这不会返回结果行。 当我不使用动态sql时,我可以在游标的帮助下返回结果,但它不会返回任何内容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
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应用程序时。我和以前一样拿到了。谢谢