Select 中使用的过程参数(Oracle、PL/SQL)

第 4 名

我有执行选择的程序:

PROCEDURE Test  (colValue    IN     VARCHAR2)               
IS
    vINS        VARCHAR2(32000) := 'select * from abc.table where col10 = colValue';        
BEGIN 
    EXECUTE IMMEDIATE vINS;
END;

但我不确定参数colValue是否在 Select 中正确使用,

也许应该像:=colValue?

考西克·纳亚克

您可以连接变量 ( || )。

编辑:正如 mathguy 所指出的,由于您正在使用一个VARCHAR2变量,您需要用额外的引号将其括起来。显然,对于数字变量,这不是必需的。

  PROCEDURE Test  (colValue    IN     VARCHAR2)               
    IS
        vINS        VARCHAR2(32000) := 'select * from abc.table where col10 = ''' || colValue ||'''';        
    BEGIN 
        EXECUTE IMMEDIATE vINS;
    END;

事实证明,在您的情况下使用绑定变量非常有效。但是,如果您动态使用 TABLE 名称、COLUMN 名称,则必须坚持连接,因为

表名和列名不能作为绑定变量传递

vINS  VARCHAR2(32000) := 'select * from abc.table where col10 = :var';

EXECUTE IMMEDIATE vINS USING colValue;

但是,EXECUTE IMMEDIATE如果您不将结果存储到变量或集合,则在 中运行 select 语句是没有用的您可以使用REF CURSORout 变量,打印结果。

  PROCEDURE Test  (colValue    IN     VARCHAR2, vINS OUT SYS_REFCURSOR)               
    IS
    BEGIN 
        OPEN vINS FOR select * from abc.table where col10 =  colValue;        
    END;


VARIABLE x REFCURSOR;
EXECUTE Test  ('Value',:x);
PRINT x;

如果您在 Oracle 12c 中工作,则可以使用 DBMS_SQL.return_result

   PROCEDURE Test  (colValue    IN     VARCHAR2 )             
    IS
    l_cursor   SYS_REFCURSOR;
    BEGIN 
        OPEN vINS FOR select * from abc.table where col10 =  colValue; 
        DBMS_SQL.return_result (l_cursor);

    END;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在存储过程 (Oracle) 中使用 SELECT 请求?

来自分类Dev

如何在MySQL过程中使用OUT参数/通过SELECT从表中读取数据

来自分类Dev

在select语句中使用的MySQL存储过程解析日期参数

来自分类Dev

在select语句中使用的MySQL存储过程解析日期参数

来自分类Dev

游标plsql使用select

来自分类Dev

Oracle SQL - 带有可变参数的 SELECT 存储过程

来自分类Dev

在 Postgres 的 SELECT 查询中使用动态参数?

来自分类Dev

在Select ORACLE SQL中使用函数

来自分类Dev

在Oracle检查约束中使用select语句

来自分类Dev

在Oracle中的select语句中使用select

来自分类Dev

如何在SQL的过程中使用select语句

来自分类Dev

MySQL:在 SELECT 和 FROM 中使用存储过程

来自分类Dev

在存储过程中的 SELECT STATEMENT 中使用 IF ELSE CONDITION

来自分类Dev

在 Oracle 的过程中使用 OUT 参数捕获错误

来自分类Dev

在SELECT中使用DATEDIFF

来自分类Dev

在COALESCE中使用SELECT

来自分类Dev

从Select语句调用Oracle存储过程?

来自分类Dev

如何在sqlDataSource的select参数中使用数据绑定?

来自分类Dev

bash:如何在select中使用带引号的参数

来自分类Dev

在C#中使用LINQ select作为方法参数

来自分类Dev

在SELECT语句中使用参数时的性能问题

来自分类Dev

如何在sqlDataSource的select参数中使用数据绑定?

来自分类Dev

如何使用传递的参数等于列订购oracle select

来自分类Dev

Oracle group by子句在select语句中使用嵌套函数

来自分类Dev

Oracle-在SELECT语句中使用变量

来自分类Dev

在 SELECT 中使用 SELECT 返回 null

来自分类Dev

使用实体框架,是否应在存储过程中使用RETURN或SELECT?

来自分类Dev

带有SELECT语句的函数的PLSQL替代参数

来自分类Dev

SQL Server 2000-使用SELECT语句的存储过程参数值

Related 相关文章

  1. 1

    如何在存储过程 (Oracle) 中使用 SELECT 请求?

  2. 2

    如何在MySQL过程中使用OUT参数/通过SELECT从表中读取数据

  3. 3

    在select语句中使用的MySQL存储过程解析日期参数

  4. 4

    在select语句中使用的MySQL存储过程解析日期参数

  5. 5

    游标plsql使用select

  6. 6

    Oracle SQL - 带有可变参数的 SELECT 存储过程

  7. 7

    在 Postgres 的 SELECT 查询中使用动态参数?

  8. 8

    在Select ORACLE SQL中使用函数

  9. 9

    在Oracle检查约束中使用select语句

  10. 10

    在Oracle中的select语句中使用select

  11. 11

    如何在SQL的过程中使用select语句

  12. 12

    MySQL:在 SELECT 和 FROM 中使用存储过程

  13. 13

    在存储过程中的 SELECT STATEMENT 中使用 IF ELSE CONDITION

  14. 14

    在 Oracle 的过程中使用 OUT 参数捕获错误

  15. 15

    在SELECT中使用DATEDIFF

  16. 16

    在COALESCE中使用SELECT

  17. 17

    从Select语句调用Oracle存储过程?

  18. 18

    如何在sqlDataSource的select参数中使用数据绑定?

  19. 19

    bash:如何在select中使用带引号的参数

  20. 20

    在C#中使用LINQ select作为方法参数

  21. 21

    在SELECT语句中使用参数时的性能问题

  22. 22

    如何在sqlDataSource的select参数中使用数据绑定?

  23. 23

    如何使用传递的参数等于列订购oracle select

  24. 24

    Oracle group by子句在select语句中使用嵌套函数

  25. 25

    Oracle-在SELECT语句中使用变量

  26. 26

    在 SELECT 中使用 SELECT 返回 null

  27. 27

    使用实体框架,是否应在存储过程中使用RETURN或SELECT?

  28. 28

    带有SELECT语句的函数的PLSQL替代参数

  29. 29

    SQL Server 2000-使用SELECT语句的存储过程参数值

热门标签

归档