Oracle中绑定变量的使用

Oracle中绑定变量的使用

1.SqlPlus中的用法

SQL> var x number;      
SQL> exec :x := 7369;

PL/SQL procedure successfully completed.

SQL> select * from scott.emp where empno=:x;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20

2.PL SQL中的用法

/* Formatted on 2021-09-24 上午 10:55:17 (QP5 v5.163.1008.3004) */
--查询语句

DECLARE
   V_ENAME   VARCHAR2 (10);
BEGIN
   EXECUTE IMMEDIATE 'SELECT ENAME FROM SCOTT.EMP WHERE EMPNO = :1'
      INTO V_ENAME
      USING 7369;

   DBMS_OUTPUT.PUT_LINE (V_ENAME);
END;

--DML语句

DECLARE
   V_SQL01     VARCHAR2 (4000);
   V_SQL02     VARCHAR2 (4000);
   V_COUNT01   NUMBER;
   V_COUNT02   NUMBER;
BEGIN
   V_SQL01 := 'INSERT INTO MONKEY.TEST02 VALUES (:1,:2,:3)';

   EXECUTE IMMEDIATE V_SQL01 USING 3, SYSDATE, 'CC';

   V_COUNT01 := SQL%ROWCOUNT;

   V_SQL01 := 'INSERT INTO MONKEY.TEST02 VALUES (:1,:1,:1)';

   EXECUTE IMMEDIATE V_SQL01 USING 4, SYSDATE, 'DD';

   V_COUNT02 := SQL%ROWCOUNT;
   DBMS_OUTPUT.PUT_LINE (V_COUNT01 + V_COUNT02);
   COMMIT;
END;

--动态SQL(SQL文本不固定,由变量决定)

DECLARE
   V_SQL     VARCHAR2 (4000);
   V_COL     VARCHAR2 (50);
   V_ENAME   VARCHAR2 (50);
BEGIN
   V_COL := 'EMPNO';
   V_SQL :=
         'DELETE FROM SCOTT.EMP WHERE '
      || V_COL
      || '=:1 RETURNING ENAME INTO :2';

   EXECUTE IMMEDIATE V_SQL USING 7369 RETURNING INTO V_ENAME;

   DBMS_OUTPUT.PUT_LINE (V_ENAME);
END;
posted @   monkey6  阅读(439)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示