SQL PL/SQL 动态变量绑定

AAD

我想运行以下查询:

SELECT 
    * 
FROM 
    TABLE1
WHERE 
    COL1 = :DynamicValue1
    AND  COL2 = :DynamicValue2
USING 
    USERENTEREDVALUE1, USERENTEREDVALUE2;

我不想使用EXECUTE IMMEDIATE.

如何using在选择查询中使用关键字?当我运行它时,我会弹出来输入值,但它给出了错误 Ora-00933

考西克·纳亚克

您可以使用替换变量

DEFINE lname = 'Rogers'
DEFINE mgrid = 122

SELECT *
FROM employees
WHERE last_name = '&lname'
AND manager_id  = '&mgrid';

当您在 SQL developer 或 SQL* Plus 中运行它时,您会得到

old:SELECT *
FROM employees
WHERE last_name = '&lname'
AND manager_id  = &mgrid
new:SELECT *
FROM employees
WHERE last_name = 'Rogers'
AND manager_id  = 122

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DAT JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- -------- ---------- ---------- -------------- ---------- -------------
        134 Michael              Rogers                    MROGERS                   650.127.1834         26-08-06 ST_CLERK         2900                       122            50

或者使用绑定变量

VARIABLE   lname VARCHAR2(40) 
VARIABLE  mgrid NUMBER 
EXEC :lname := 'Rogers'
EXEC :mgrid := 122
VARIABLE x REFCURSOR


BEGIN
     OPEN :x FOR SELECT *
                 FROM employees
                 WHERE last_name =:lname 
                 AND manager_id =:mgrid;
END;
/

    PRINT x

结果

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.



EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DAT JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- -------- ---------- ---------- -------------- ---------- -------------
        134 Michael              Rogers                    MROGERS                   650.127.1834         26-08-06 ST_CLERK         2900                       122            50

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL:动态变量名

来自分类Dev

获取 SQL 插入的动态变量

来自分类Dev

PLSQL变量

来自分类Dev

PLSQL-动态声明变量

来自分类Dev

在基于FOR LOOP的SQL查询中使用PLSQL变量

来自分类Dev

在SSIS中使用动态变量连接到SQL Server

来自分类Dev

SQL Server:OPTION(MAXRECURSION n)无法使用动态变量

来自分类Dev

T-SQL:SELECT 中的动态变量问题

来自分类Dev

动态变量T-SQL(使用存储过程)

来自分类Dev

在 SQL Server 中映射动态列名,其中动态变量整数

来自分类Dev

动态更新序列值-plsql

来自分类Dev

PLSQL:如果变量IN子查询

来自分类Dev

使用绑定变量进行动态SQL更新

来自分类Dev

如何使用sql / plsql获取模式的用户

来自分类Dev

SQL Server:如何将列名设置为动态变量的值?

来自分类Dev

在SQL Server的存储过程中解析JSON的动态变量

来自分类Dev

如何在SQL中的for循环内创建动态变量名

来自分类Dev

SQL Server:如何将列名设置为动态变量的值?

来自分类Dev

php绑定动态变量的数量,用于批量插入查询

来自分类Dev

mysqli bind_param中的动态变量绑定

来自分类Dev

动态变量,绑定,命名空间可见性

来自分类Dev

在leiningen插件中使用动态变量绑定

来自分类Dev

使用plsql在游标中绑定数组

来自分类Dev

PLSQL动态填充无边界数组

来自分类Dev

游标PLSQL中的动态列名称

来自分类Dev

从PLSQL处理Oracle Apex上的动态值

来自分类Dev

plsql-评估动态字符串

来自分类Dev

plsql - 动态更改游标中的表名

来自分类Dev

PLSQL-带变量的更新语句