Oracle动态SQL
来源:互联网 发布:艾瑞网怎么查数据 编辑:程序博客网 时间:2024/05/01 18:35
动态SQL语法
只有在运行时候Oracle才能够检测它的格式是否正确
INTO和USING子句是可选的
如果SQL语句是一个查询语句的话,我们可以使用INTO子句
INTO语句用于接收SELECT语句选择的记录值,可以是一个变量序列,也可以是一个记录型的变量也就是record型的变量
这个变量序列的顺序对应于查询结果集中的记录的值的顺序
如果有参数需要动态确定,我们可以使用USING子句
动态创建表
示例
--动态SQL语句begin execute immediate 'create table bonus (id number,ant number)';end; --动态查询用户的电话 declare sql_stmt varchar2(200); --存储查询语句 emp_id number(10):='&emp_id'; emp_rec employees%rowtype; begin sql_stmt:='select * from employees where id=:id' ; execute immediate sql_stmt into emp_rec using emp_id; dbms_output.put_line(emp_rec.phone); end;
--动态插入 declare sql_stmt varchar(200); emp_id number(10):='&emp_id'; emp_rec employees%rowtype; begin sql_stmt:='insert into employees (id) values(:id)'; execute immediate sql_stmt using emp_id; end;
execute immediate语句只能执行返回一行或者没有返回,如果要编写返回多行的sql语句要使用REF动态游标
示例:
--动态SQL,动态游标 declare e_id number(10); e_name varchar2(50); s_salary number(8); type c_type is ref cursor; cur c_type; p_salaty number:='&p_id'; begin open cur for 'select e.id,e.name,s.salaryvalue from employees e,salary s where e.id=s.employeeid and s.salaryvalue>:sal order by id asc' using p_salry; dbms_output.put_line('薪水大于'||p_salary||'的员工有:'); loop fetch cur into e_id, e_name,s_salary; exit when cur%notfound; dbms_output.put_line('编号:'||e_id||'姓名:'||e.name||'薪水'||s_salary); end loop; close cur; end;
- oracle笔记动态SQL
- Oracle中的动态sql
- ORACLE动态SQL
- 转:ORACLE 动态SQL
- Oracle 动态SQL
- Oracle动态SQL语句
- oracle 动态sql
- oracle 动态sql
- oracle动态sql
- Oracle的动态SQL
- oracle动态sql
- Oracle中的动态SQL
- Oracle中的动态SQL
- oracle 动态SQL语句
- Oracle动态SQL语句
- Oracle动态SQL
- oracle动态SQL详解
- Oracle动态SQL语法
- Ubuntu命令shutdown 详解
- VC 进程间通信
- Servlet中操作文件
- aix下备份记录查询
- Android中BroadCastReceiver使用(整理)
- Oracle动态SQL
- 打印图形
- perl 子函数
- Android接口定义语言---AIDL(四)
- 配置Tomcat
- [SQL Server] sp_who, sp_who2和sp_who3
- 事务隔离级别
- ios 应用内支付,沙盒测试时出现“此Apple ID尚未在iTunes Store使用过。。。”
- 前后台参数传递(&,%处理)