从动态PL / SQL查询返回数据

时间:2017-02-02 17:28:25

标签: oracle plsql

我正在获取存储在数据库中的查询,尝试使用参数执行它,然后处理结果。

DECLARE 
  SQLSTR VARCHAR(5000); 
BEGIN 
SELECT SelectString INTO SQLSTR FROM MySelectTable WHERE Name = 'QueryOfDoom';
EXECUTE IMMEDIATE SQLSTR USING 1;
END;

执行查询但不返回任何内容。我在这里搜索过,发现你无法从一个集团返回数据。没关系。但是,我如何获取数据?因为它是动态的,所以如果我必须定义一个表结构来批量收集数据并随后从中选择,那么它会让我觉得麻烦。有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

你必须这样使用。您正在使用PLSQL的方式无法使用using子句,因为它找不到任何绑定。

DECLARE 
  SQL1 VARCHAR(5000); 
  SQLSTR VARCHAR(5000);   
BEGIN 
sql1:= 'SELECT SelectString FROM MySelectTable WHERE Name = :QueryOfDoom';

EXECUTE IMMEDIATE SQL1 into SQLSTR USING 1;
END;