`
sd8089730
  • 浏览: 258583 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Oracle (触发器)execute immediate 'sql语句'

阅读更多
create or replace trigger 名 
before or after DML(Insert ,uodate ,delete)on 表名
begin
执行语句
end;
/
对操作进行日志备份
create or replace trigger 名 
before insert on emp
begin
insert into emp_log(user,to_cahr(sysdate,'yyyy-mm-dd hh:mi:ss','insert);
end;

 

create or replace trigger t_timelimited
after insert or delete or update on emp
declare
v_time varchar2(20);
begin
v_time:=to_char(sysdate,'hh24');
if v_time=19 then
raise_application_error(-20009,'这个时段禁止此操作');
end if;
end;

19时 不能进行 这些操作

 

create or replace trigger t_emp
before insert or update or delete on emp
begin
if inserting then
insert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'insert');
elsif updating then
insert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'update');
elsif deleting then
insert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'delete');
end if;
end;

 

EMP表删除 几行 就插入EMP2 几行

 create or replace trigger t_new
 before delete on emp
 for each row
 begin
 if deleting then
 insert into emp2 values (:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);
 end if;
 end;
 /
行级触发器  :new.字段名  是 更改后新的内容
            :old.字段名 是更改前的内容
  要使用  new 和 old 必须先 加上 for each row
old和new  如果执行update 更改前的就是old 更改后的就是new
 如果是删除 new 就是 空  如果插入 old 就是空

 

创建序列

SQL> create sequence s_sstu;

序列已创建。

创建表---------------------------------------------------------------------
SQL> create table stu(
  2  id int,
  3  name varchar2(20));
创建触发器-----------------------------------------------------------------
 create or replace trigger t_stu
 before insert on stu
 for each row
 begin
 select s_sstu.nextval into :new.id from dual;
 end;
/

插入--------------------------------------------------
 insert into stu(name) values('mt');

 

execute immediate 'sql语句'

begin
execute immediate 'create table emp as select * from emp';
end;
可以执行 

 

分享到:
评论

相关推荐

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...

    Oracle触发器里调用Java程序

    可以使用以下SQL语句将Java源代码加载到数据库中: ```sql EXECUTE IMMEDIATE 'CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "MyJavaClass" AS import java.sql.*; public class MyJavaClass { public static...

    Oracle触发器.pdf

    EXECUTE IMMEDIATE 'SELECT category_id INTO categid FROM category_info WHERE category_name = :new.category'; ``` 通过以上知识点,可以了解到Oracle触发器是一个功能强大且灵活的数据库功能,能够帮助开发者...

    Oracle_PL-SQL.rar_ORACLE PL_oracle_oracle sql_oracle 教程_pl sql

    10. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL语句,提高了代码的灵活性。 “Oracle PL-SQL语言初级教程.pdf”很可能是这个压缩包的核心内容,它会逐步引导学习者了解上述知识点,并通过...

    PLSQL及oracle的SQL语句

    6. **动态SQL**:使用EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE组合来执行动态构建的SQL语句。 7. **包**:如何创建和使用包来组织相关的PLSQL代码,提高代码复用性和模块化。 总之,PLSQL与Oracle SQL结合使用,...

    Oracle9i PL_SQL程序设计

    通过EXECUTE IMMEDIATE语句,我们可以根据程序的需要生成和执行任意的SQL命令。 在Oracle9i PL/SQL程序设计的学习过程中,理解并熟练掌握这些核心概念和技术至关重要。通过深入学习和实践,开发者可以构建出高效、...

    《精通Oracle PL/SQL》源码

    7. **动态SQL**:通过EXECUTE IMMEDIATE和DBMS_SQL模块,你可以编写和执行运行时构建的SQL语句,这在处理灵活的数据操作需求时非常有用。 8. **索引和性能优化**:示例可能包括如何利用索引来加速查询,以及如何...

    精通Oracle 10g PL SQL编程

    - 动态SQL允许在运行时构建和执行SQL语句,使用EXECUTE IMMEDIATE或PREPARE...EXECUTE...COMMIT/FETCH结构。 8. **事务管理**: - COMMIT提交事务,保存所有更改;ROLLBACK回滚事务,撤销所有更改。 - SAVEPOINT...

    Oracle_PLSQL.rar_Java plsql_oracle_oracle doc_pl sql_plsql

    - **嵌入式SQL**:PL/SQL可以直接嵌入SQL语句,用于查询、插入、更新和删除数据库中的数据。 - **动态SQL**:通过EXECUTE IMMEDIATE语句执行字符串形式的SQL,适应更灵活的需求。 3. **PL/SQL控制结构** - **...

    Oracle9i PL/SQL程序设计 code部分

    通过EXECUTE IMMEDIATE动态执行SQL,可以处理更复杂的任务,如运行用户输入的SQL语句。 7. **异常处理**:PL/SQL提供了强大的异常处理机制,允许开发者预定义异常,或者捕获并处理运行时错误,保证程序的健壮性。 ...

    Oracle8 PL_SQL程序设计

    9. **动态SQL**:通过EXECUTE IMMEDIATE语句,PL/SQL能够动态地构建和执行SQL语句,增加了灵活性和适应性。 10. **包(PACKAGE)**:包是将相关的过程、函数、变量和常量组合在一起的命名实体,提供了一种组织和...

    Oracle PL/SQL Programming

    5. **存储过程和函数**:存储过程是一组PL/SQL语句,可以在数据库中存储并重复调用。函数类似,但返回一个值。它们能提高性能,减少网络通信,并提供封装和模块化。 6. **触发器**:触发器是数据库级别的事件驱动...

    PLSQLcode in Oracle9i PL/SQL Programming

    11. **动态SQL**:使用EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE组合,能够在运行时构建和执行SQL语句,这对于处理动态数据需求非常有用。 12. **游标变量和 bulk collect**:游标变量可以用于在PL/SQL中传递和...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    4. **动态SQL**:探讨如何在PL/SQL中执行SQL语句,包括EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE模式,以及绑定变量的应用。 5. **包(PACKAGE)**:详细解释包的概念,包括公共和私有部分,以及如何通过包来组织...

    Oracle.PL.SQL程序设计 下册

    - 动态SQL允许在运行时构建和执行SQL语句,通过EXECUTE IMMEDIATE和DBMS_SQL包实现。 - 动态SQL提高了灵活性,但也需警惕SQL注入问题。 10. **事务管理** - PL/SQL支持事务的概念,通过COMMIT提交事务,ROLLBACK...

    Oracle-Pl-Sql 培训 PPT

    11. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL语句,增强了程序的灵活性。 12. **包规范和体**:包规范定义了包的公共接口,包括过程、函数和变量声明;包体包含了实现这些接口的代码。 ...

    Oracle官方文档CHM合集-SQL参考手册 Oracle教程 Oracle开发

    9. **游标与动态SQL**:游标(CURSOR)允许逐行处理查询结果,而动态SQL(EXECUTE IMMEDIATE)允许在运行时构建和执行SQL语句,适应变化的需求。 10. **触发器与约束**:触发器(TRIGGER)是自动执行的数据库对象,...

    oracle PL SQL 程序设计(第5版)下册

    13. **动态SQL**:通过EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE来执行动态构建的SQL语句,适应不同的运行时需求。 14. **游标表达式和并行执行**:利用游标表达式进行高级查询操作,同时了解如何在PL/SQL中实现...

    Oracle 8i PL_SQL高级程序设计

    11. **动态SQL**:通过EXECUTE IMMEDIATE语句,PL/SQL可以执行在运行时生成的SQL语句,增强了灵活性。 12. **事务管理**:PL/SQL提供了COMMIT和ROLLBACK语句,用于控制事务的提交和回滚,确保数据一致性。 13. **...

Global site tag (gtag.js) - Google Analytics