1、设置变量默认值:
直接在参数类型后加:=defaultvalue
例子:
V_FUNCNAME VARCHAR2(20) := 'IFELSE';
2、EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.
它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。
EXECUTE IMMEDIATE 'select ' || V_JSGS_BTXM_CONTENT_VALUE || ' from dual' INTO RESULT;
规则1:EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交。
规则2:如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据。
declare
l_depnam varchar2(20) := 'testing';
l_loc varchar2(10) := 'Dubai';
begin
execute immediate 'insert into dept values (:1, :2, :3)'
using 50, l_depnam, l_loc;
commit;
end;
当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号
3、goto关键字:
PL/SQL对于GOTO的使用有一些限制.对于块,循环或者IF语句而言,想要从外层跳转到内层是非法的.
使用GOTO语句从一个IF子句跳转到另一个子句中也是非法的.
最后,从一个异常处理块内部跳转到当前块是非法的.
/*
goto label_name;
只能由内部的语句块跳往外部块
设置标签
<<label_name>>
可以为循环设置标签
*/
declare
id number:=1;
begin
loop
dbms_output.put_line('循环次数--'||id);
id :=id+1;
if id=10 then
goto a;
end if;
end loop;
<<a>>
dbms_output.put_line('跳出循环');
end;
/
注意,goto语句不能在异常处理中跳转!
分享到:
相关推荐
Oracle中EXECUTE IMMEDIATE用法
execute immediate 用法研究 为初学者打造。
动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。 — 使用技巧 ...
用execute immediate 执行备份恢复SQLSVR数据库
NULL 博文链接:https://wushuangyan26.iteye.com/blog/1306094
oracle动态sql之EXECUTE IMMEDIATE.docx
动态SQL 并且把返回的值赋给变量,sp_executesql,动态sql语句基本语法
关键字 描述 all 允许仅将数组的一部分与采用数组参数的函数一起使用。 and CP。 使用逻辑 AND 将多个约束聚合为一个约束。 assert 检查假定。 boolean 决策变量的域快捷方式。 constraints 约束 (subject to) 的...
Object和actor引用变量 类引用变量 表达式 赋值 在类之间转换对象引用 函数 声明函数 函数参数修饰符 函数重载 高级函数修饰符 控制结构 循环结构 循环 Do循环 While 循环 ...
MarkDown文档,意在说明线程池方法:submit()和execute()方法的区别
MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法。 先建立一个表,并添加一些数据来进行演示: 复制代码 CREATE TABLE t_student( Id INT NOT NULL, ...
OCILIB是一个便携式Oracle驱动程序,可提供非常快速和可靠地访问Oracle数据库。它提供了一个丰富,功能齐全,并易于使用的API 。OCILIB
EXECUTE
警告: SQL Error: 156, ...org.hibernate.exception.SQLGrammarException: could not execute query org.hibernate.util.JDBCExceptionReporter logExceptions 严重: 关键字 'user' 附近有语法错误。 的解决方案。
JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法
在Jenkins构建springboot项目自动部署的时候,配置远程执行Dockerfile所在服务器的SSH命令,这里把完整的命令贴出来,详细搭建过程见我的博客《基于Jenkins+Gitlab+Docker实现SpringBoot项目自动部署》
connection对象的execute方法
failed to execute script 解决方案+命令行执行传参exe
SQL Server EXEC和sp_executesql的区别