首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PLSQL --> 动态SQL

比如传递部门号调用存储过程,返回该部门所有雇员及薪水信息,则该语句SELECT ename,sal INTO lv_ename,lv_sal FROM scott.emp WHERE deptno...以上两种情况,可以创建存储过程来对其进行分页,通过定义变量,根据输入不同表名,字段名,排序方法来生成不同SQL 语句。对于输入不同参数,SQL每次运行时需要事先对其编译。...4.动态SQL语句几种方法 a.使用EXECUTE IMMEDIATE语句 包括DDL语句,DCL语句,DML语句以及单行SELECT 语句。该方法不能用于处理多行查询语句。...三、动态SQL使用(DDL,DCL,DML以及单行结果集) 1.使用EXECUTE IMMEDIATE处理DDL操作 下面是一个简单DDL操作,将其封装在存储过程之中,通过传入表名来进行调用。...2.使用EXECUTE IMMEDIATE 结合BULK子句处理DML语句返回子句 下面的例子,首先定义了两个索引表类型以及其变量,接下来使用动态SQL语句来更新tb2薪水,使用EXECUTE IMMEDIATE

2.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

OracleExecute Immediate用法

尽管DBMS_SQL仍然可用,但是推荐使用Execute Immediate,因为它获收益包之上。...-- 使用技巧 1、Execute Immediate将不会提交一个DML事务执行,应该显式提交,如果通过Execute Immediate处理DML命令,那么完成以前需要显式提交或者作为Execute...如果通过Execute Immediate 处理DDL命令,它提交所有以前改变数据。 2、不支持返回多行查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors。...3、当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号。 4、Oracle手册,未详细覆盖这些功能。 下面的例子展示了所有用到Execute Immediate可能方面。...5、对于Forms开发者,当在PL/SQL 8.0.6.3.版本,Forms 6i不能使用此功能. Execute Immediate -- 用法例子 1.

1.3K30

存储过程常见语法

存储过程常见语法 一、存储过程概念: 1、存储过程Procedure是一组为了完成特定功能SQL语句集合,经编译后存储在数据库,用户通过指定存储过程名称并给出参数来执行 2、存储过程可以包含逻辑控制语句和数据操纵语句...3、由于存储过程创建时即在数据库服务器上进行了编译并存储在数据库,所以存储过程运行要比单个SQL语句块要快。...三、存储过程 if语句: if 逻辑表达式 then 内容 Elsif 逻辑表达式 then 内容 Else 内容 End if; 四、oracle 存储过程...事务检测到错误时,您可以错误日志表格插入一行并提交它,然后不丢失这次插入情况下回滚主事务。...immediate v_sql;--执行sql commit; end insertLog; 九、如何检测存储过程错误 begin EXCEPTION WHEN OTHERS THEN

1K20

PLSQL --> 动态SQL常见错误

--执行动态SQL语句 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM tb_emp' --直接使用EXECUTE IMMEDIATE后跟动态SQL串获得新表记录数...1.使用动态DDL时,不能使用绑定变量 下面的示例创建表示,使用了绑定变量:dno,执行时候收到了错误信息。...传递参数到动态SQL或使用INTO子句传递结果集到变量应注意按正确顺序排列处理 下面的示例由于v_ename与v_sal为不同数据类型,使用INTO时不小心将顺序颠倒,导致错误产生。...7.日期型或字符型动态SQL处理时,需要注意单引号个数问题,特殊情况下可以使用chr(39)作为单引号使用。...8.动态SQLRETURNING INTO返回DML操作结果,对于SELECT查询返回结果,执行EXECUTE IMMEDIATE时,直接使用INTO子句来传递。

2.1K20

Oracle-Soft ParseHard ParseSoft Soft Parse解读

概述 Oracle存在两种类型SQL语句: 一类为 DDL语句(数据定义语言)CREATE,DROP,ALTER,他们是从来不会共享使用,也就是每次执行都需要进行硬解析。...emp where empno=7788 --未使用绑定变量   select * from emp where empono=:eno --:eno即为绑定变量   第二个查询变量查询执行时被提供...该查询只编译一次,随后会把查询计划存储一个共享池(库缓存),以便以后获取和重用这个查询计划。   ...proc1 as --创建存储过程proc1使用绑定变量来插入新记录 begin for i in 1 .. 10000 loop execute...proc2 --创建存储过程proc2,未使用绑定变量,因此每一个SQL插入语句都会硬解析 as begin for i in 1 .. 10000 loop execute

2.2K20

Oracle 动态SQL「建议收藏」

4、动态SQL处理方法 1)、适用execute immediate execute immediate可以处理多数动态SQL操作,包括DDL语句、DCL语句、DML语句、及单行select语句...子句DML语句 说明:使用execute immediate处理带有returning子句DML语句时,只能处理作用在单行上DML语句; 如果DML语句作用在多行上,则必须使用bulk子句...2、execute immediate语句使用bulk子句 1)、概述 通过execute immediate语句使用bulk子句可以处理作用在多行上动态DML返回子句,和多行查询语句...1)、概述 使用forall语句,可允许动态SQL语句中为输入变量同时提供多个数据, 但forall语句只适用于动态insert\update\delete语句, 不适用于动态select...语句,并且forall语句是和execute immediate结合使用

1.4K10

干货 | Oracle数据库注入方式总结

普通SQL语句使用上增加了编程语言特点,所以PL/SQL就是把数据操作和查询语句组织PL/SQL代码过程性单元,通过逻辑判断、循环等操作实现复杂功能或者计算程序语言。...我们传递是一个sql 语句所以返回就是语句执行结果。oracle 启动之后,把一些系统变量都放置到一些特定视图当中,可以利用这些视图获得想要东西。.../oracle')=1--+ 利用漏洞提权执行命令 Oracle提权漏洞集中存在于PL/SQL编写函数、存储过程、包、触发器。...即,无论调用者权限如何,执行存储过程结果权限永远为定义者权限,因此,如果一个较高权限用户定义了存储过程,并赋予了低权限用户调用权限,较低权限用户即可利用这个存储过程提权。...因此Oracle公司Oracle数据库,同样支持了使用Java来编写存储过程。 那么对于攻击者来说,完全可以通过这一特性,系统上执行Java代码,从而完成提权操作。

4.7K11

Mariadb EXECUTE IMMEDIATE 解析

0x01 前言 该篇文章起源于XCTF 决赛清华对一道web题非预期,该题中过滤了很多关键字,包括SELECT等,预期解为mariadb主从复制,但清华使用EXECUTE IMMEDIATE绕过了黑名单导致非预期...例如,下面的代码展示了如何使用 EXECUTE IMMEDIATE 执行一个简单 SELECT 查询: SET @id = 123; SET @stmt = CONCAT('SELECT * FROM...mytable WHERE id = ', @id); EXECUTE IMMEDIATE @stmt; 在这个例子,我们将 @id 变量值拼接到 SQL 查询字符串,然后使用 EXECUTE...IMMEDIATE可以进行绕过 原题中使用环境为mariadb 10.3.38 EXECUTE IMMEDIATE 'SELECT * FROM ctf.admin'; 可以直接执行字符串sql...语句基于这一点情况下就很容易进行绕过 该题中并没有过滤各种字符串编码,所以我们可以使用如下方法进行绕过 EXECUTE IMMEDIATE UNHEX('53454c454354202a2046524f4d206374662e61646d696e

42940

Oracle SQL调优系列之绑定变量用法简介

最近在看《基于OracleSQL优化一书》,并做了笔记,作者个人博客:http://www.dbsnake.net/ 文章目录 一、SQL执行过程简介 二、绑定变量典型用法 2.1、SQL绑定变量...2.2、PL/SQL中使用绑定变量 2.3、PL/SQL批量绑定变量 2.4、Java代码里使用绑定变量 一、SQL执行过程简介 继上一篇博客Oraclecursor学习笔记:Oracle游标Cursor...软解析:是指Oracle执行目标SQL时,Library Cache中找到了匹配Parent Cursor和Child Cursor,并将存储Child Cursor解析树和执行计划直接拿过来重用.../SQL中使用绑定变量 /* SQL语句使用绑定变量*/ declare vc_empname varchar2(10); begin execute immediate 'select ename...(vc_number)); commit; end; / 所以绑定变量pl/sql里核心语法为: execute immediate [sql语句] using [变量] 2.3、PL/SQL

64920

Oracle 存储过程 PROCEDURE

Oracle存储过程 一组用于完成特定数据库功能SQL语句集,该SQL语句集经过编译后存储在数据库系统。...使用时候,用户通过指定已经定义存储过程名字并给出相应存储过程参数来调用并执行它,从而完成一个或一系列数据库操作。 包含三部分:过程声明,执行过程部分,存储过程异常(可选)。...nvl(max(id),0)+1 FROM ' ||tablename;   execute immediate sqlstring into idno;              -- 动态执行...      o_result out types.cursorType, --结果集       ip_pwf  in varchar2) --关联流程    as   /*  --类型声明是游标变量...nvl(max(job_code),0)  from '||vs_table||' where company = '||vn_id||'';  execute immediate v_sql into

61310

【DB笔试面试465】如何使用批量动态SQL(FORALL及BULK子句使用)?

答案部分 批量动态SQL即在动态SQL中使用BULK子句,或使用游标变量FETCH中使用BULK,或在FORALL子句中使用BULK子句来实现。...常用三种语句支持BULK子句,分别为EXECUTE IMMEDIATE,FETCH和FORALL。...2、使用EXECUTE IMMEDIATE结合BULK子句处理DML语句返回子句 下面的例子,首先定义了两个索引表类型以及其变量,接下来使用动态SQL语句来更新T_20170104_LHR薪水,使用EXECUTE...EXECUTE IMMEDIATE结合BULK子句处理多行查询 在下面示例,与前一个示例相同,只不过其动态SQL由查询语句组成,且返回多个结果集,同样使用了BULK COLLECT INTO来传递结果...下面的示例,首先声明了两个复合类型以及复合变量,接下来为复合变量ENAME_TABLE赋值,以形成动态SQL语句。紧接着使用FORALL子句结合EXECUTE IMMEDIATE 来提取结果集。

1.9K30

【DB笔试面试464】动态SQL是什么?

答案部分 PL/SQL开发过程使用SQL或PL/SQL可以实现大部分需求,但是,在某些特殊情况下,PL/SQL中使用标准SQL语句或DML语句不能实现自己需求,例如需要动态建表或执行某个不确定操作时候...因此,Oracle数据库开发PL/SQL块,可以把SQL分为静态SQL和动态SQL。所谓静态SQL指的是PL/SQL块中使用SQL语句在编译时是明确,执行是确定对象。...动态SQL允许SQL客户模块或嵌入式宿主程序执行过程执行动态生成SQL语句,动态SQL语句程序编译时尚未确定。...其中,有些部分需要在程序执行过程临时生成SQL语句,SQL标准引入动态SQL原因是由于静态SQL不能提供足够编程灵活性。 动态SQL是使用EXECUTE IMMEDIATE语句来实现。...下面给出一个使用动态SQL例子。 需求:完成一个存储过程,根据用户输入表名及字段名等参数动态创建表。

1.3K20

Oracle SQL调优之绑定变量用法简介

,解析树等对象,如果找不到库缓存对象句柄,就需要重新解析,这个过程解析过多,容易造成硬解析问题 硬解析:是指Oracle执行目标SQL时,在库缓存找不到可以重用解析树和执行计划,而不得不从头开始解析目标...软解析:是指Oracle执行目标SQL时,Library Cache中找到了匹配Parent Cursor和Child Cursor,并将存储Child Cursor解析树和执行计划直接拿过来重用...方法就是用绑定变量方法 二、绑定变量典型用法 2.1、SQL绑定变量 绑定变量典型用法就是用 :variable_name形式,variable_name是自定义变量名称,variabl_name.../SQL中使用绑定变量 /* SQL语句使用绑定变量*/ declare vc_empname varchar2(10); begin execute immediate 'select ename...pl/sql里核心语法为: execute immediate [sql语句] using [变量] 2.3、PL/SQL批量绑定变量 例子来自《基于OracleSQL优化》一书,要实现是批量绑定变量

1.2K20
领券