mysql oracle游标 动态sql语句_Oracle 动态SQL

-- 一、立刻执行SQL语句

declare

mysql varchar2(200);  -- 保存SQL语句(所谓的动态SQL,就是一个可变的变量)

begin

mysql := 'select 1+1 from dual';

dbms_output.put_line(mysql);

end;

-----------

declare

mysql varchar2(200);  -- 保存SQL语句(所谓的动态SQL,就是一个可变的变量)

begin

mysql := 'create table aa(a1 varchar2(100))';

execute immediate mysql;

end;

drop table aa;

create table aa(a1 varchar2(100))

select * from aa

--------------------

begin

create table aa_20180402(a1 varchar2(100));

end;

-------------------

declare

mysql varchar2(200);  -- 保存SQL语句(所谓的动态SQL,就是一个可变的变量)

today varchar2(8);

begin

select to_char(sysdate,'yyyyMMdd') into today from dual;

mysql := 'create table aa_'|| today ||'(a1 varchar2(100))';

dbms_output.put_line(mysql);

execute immediate mysql;

end;

select to_char(sysdate,'yyyyMMdd') from dual

-- 二、立刻执行SQL语句,并赋值给某个变量

select * from t_user5

select * from t_user6

如果 xxx 是一张表,我们就插入1条记录

如果 xxx 是一个视图,那我们就提示这是一个视图,

不能插入数据

create view t_user6 as select * from t_user5

select upper('t_user6') from dual

select OBJECT_TYPE from dba_objects where object_name=upper('t_user6');

select OBJECT_TYPE from dba_objects where object_name=upper('t_user5');

-------------------------------------

select * from tt3

-------------

create or replace procedure p_a1(obj_name in varchar2)

is

my_str1 varchar2(100);

xxx tt3%rowtype;

begin

-- 拼凑1条可执行的动态SQL ,保存sql语句到my_str1 这个变量中

my_str1 := 'select * from tt3 where user_name=';

my_str1 := my_str1 || '''';

my_str1 := my_str1 || obj_name;

my_str1 := my_str1 || '''';

--dbms_output.put_line(my_str1);  --调试用

execute immediate my_str1 into xxx;

dbms_output.put_line(xxx.city);

end;

------------------------------

-- 三、带参数的动态SQL(可以把结果存储到某个变量)

create or replace procedure p_a1(obj_name in varchar2)

is

my_str1 varchar2(100);

xxx tt3%rowtype;

begin

-- 拼凑1条可执行的动态SQL ,保存sql语句到my_str1 这个变量中

my_str1 := 'select * from tt3 where user_name=:1';

--dbms_output.put_line(my_str1);  --调试用

execute immediate my_str1 into xxx using '小明';

dbms_output.put_line(xxx.city);

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值