PL/SQL 动态 SQL

本文介绍了PL/SQL中的动态SQL概念,强调了其灵活性和能够执行DDL语句的优势。动态SQL是在运行时拼接并执行的,但可能会因拼接错误或权限问题导致执行失败。文章提到了两种执行动态SQL的方法:EXECUTE IMMEDIATE和DBMS_SQL,并提供了一个简单的示例,更多详细内容参考《Oracle Database PL/SQL Packages and Types Reference》。
摘要由CSDN通过智能技术生成

-- Start

什么是动态 SQL 呢?它是运行时才动态拼接和执行的 SQL。相对于静态 SQL,它最大的优势就是灵活,可以执行 DDL 语句。缺点是它没有经过预编译,运行时可能由于拼接错误、权限等问题失败。我们可以通过下面两种方式执行动态 SQL。

EXECUTE IMMEDIATE

-- 创建测试表  
CREATE TABLE student  
(  
  id number(10),  
  name varchar2(20)  
);  
  
-- 创建测试存储过程  
CREATE OR REPLACE PROCEDURE insert_student  
(  
    id IN OUT student.id%TYPE,  
    name student.name%TYPE  
) IS  
    max_id student.id%TYPE;  
BEGIN  
    select max(id) into max_id from student;  
  
    if id <= max_id then  
      id := max_id + 1;  
    end if;  
  
    insert into student values (id, name);  
END;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值