`
wwty
  • 浏览: 538701 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

变量默认值和EXECUTE IMMEDIATE以及goto关键字

SQL 
阅读更多

 

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用法

    Oracle中EXECUTE IMMEDIATE用法

    execute immediate 用法研究

    execute immediate 用法研究 为初学者打造。

    EXECUTE IMMEDIATE用法小结

    动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。 — 使用技巧 ...

    用execute immediate 执行备份恢复SQLSVR数据库

    用execute immediate 执行备份恢复SQLSVR数据库

    oracle动态sql之EXECUTE IMMEDIATE.docx

    EXECUTE IMMEDIATE 语法为:EXECUTE IMMEDIATE v_sql [BULK COLLECT INTO 或 INTO 返回值变量] [INTO 入参 1,.., out 出参 1,..]。 其中,v_sql 是 varchar2 类型或 clob(11g 才支持),可以为 DDL、DML 等动态...

    动态SQL之EXECUTE IMMEDIATE

    NULL 博文链接:https://wushuangyan26.iteye.com/blog/1306094

    在Oracle中执行动态SQL

    EXECUTE IMMEDIATE的优点是可以减小企业费用并获得较高的性能,但是需要注意其使用技巧和限制。 Oracle中执行动态SQL可以使用动态游标或EXECUTE IMMEDIATE两种方法。动态游标可以实现灵活的SQL语句生成,而EXECUTE ...

    动态SQL 并且把返回的值赋给变量

    动态SQL 并且把返回的值赋给变量,sp_executesql,动态sql语句基本语法

    ILOG CPLEX OPL 关键字的摘要表.pdf

    关键字 描述 all 允许仅将数组的一部分与采用数组参数的函数一起使用。 and CP。 使用逻辑 AND 将多个约束聚合为一个约束。 assert 检查假定。 boolean 决策变量的域快捷方式。 constraints 约束 (subject to) 的...

    oracle数据库关键字

    Oracle数据库是一种关系型数据库管理系统,它提供了大量的关键字来帮助开发者快速地开发和管理数据库应用程序。下面是Oracle数据库中的所有关键字总览: 数据类型 * ARRAY:数组类型,用于存储一个集合的数据。 * ...

    C# 链接mysql数据库 出现 给定关键字不在字典中

    C#在链接mysql数据库的时候 间歇性的会出现 打开链接的时候会报错. 调整mysql.data.dll 链接驱动版本. 将程序引用dll,替换为上传压缩包中的dll

    Gbase8s动态sql的介绍

    在上面的示例中,我们创建了一个名为 create_table 的存储过程,该过程接受两个参数,table_name 和 columns,然后使用 execute immediate 语句来执行动态 SQL 语句,创建一个名为 t1 的表,包含 id 和 name 两个列...

    UnrealScript 语言参考

     Object和actor引用变量  类引用变量 表达式  赋值  在类之间转换对象引用 函数  声明函数  函数参数修饰符  函数重载  高级函数修饰符 控制结构 循环结构  循环  Do循环  While 循环  ...

    线程池的submit和execute的区别.md

    MarkDown文档,意在说明线程池方法:submit()和execute()方法的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别.doc

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法。 先建立一个表,并添加一些数据来进行演示: 复制代码 CREATE TABLE t_student( Id INT NOT NULL, ...

    JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法

    JDBC 中 PreparedStatement 接口提供的 execute、executeQuery 和 executeUpdate 之间的区别及用法 JDBC 中的 PreparedStatement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。...

    Oracle中Using用法

    在 Oracle 中,使用 Using 语句可以实现动态 SQL 的绑定变量,提高 SQL 语句的灵活性和安全性。本文将对 Oracle 中 Using 用法进行详细的介绍,并提供实际开发的示例和技巧。 一、静态 SQL 和动态 SQL 在 Oracle ...

    Dede(织梦)文章内容自动添加关键字链接的方法-详解

    Dede(织梦)文章内容自动添加...通过上面的设置和修改,Dede将可以自动添加关键字链接到文章内容中,并且可以根据需要设置关键词的replacement次数和链接个数。这样可以大大提高网站的用户体验和搜索引擎优化效果。

    OCI 操作读取oracle

    OCILIB是一个便携式Oracle驱动程序,可提供非常快速和可靠地访问Oracle数据库。它提供了一个丰富,功能齐全,并易于使用的API 。OCILIB

Global site tag (gtag.js) - Google Analytics