Oracle动态表名

  • 第一种:execute immediate sqlstr
  • 第二种:dbms_sql工具体

一、execute immediate sqlstr

create or replace procedure my_procedure()
return number
as
 sqlstr varchar2(500);
 table_name varchar2(100);
 name varchar2(200);
 num number;
begin
 table_name := 'user_' || '01';
 name = 'leo';
 sqlstr := 'select count(*) from ' || table_name || ' where username= :name';
 -- into 查询结果, using 后面放入注入参数
 execute immediate sqlstr into num using name;
 -- 返回结果
 return num;
end;

二、dbms_sql工具体

create or replace procedure my_procedure
as
  c number;
  n number;
  table_name varchar2(100);
begin
  -- 打开游标
  c := dbms_sql.open_cursor;
  -- 解析sql
  table_name = 'user_' || '01';
  dbms_sql.parse(c, 'insert into ' || table_name 
        || ' values(:userid, :username, :password)');
  -- 绑定变量
  dbms_sql.bind_variable(c, 'userid', '1');
  dbms_sql.bind_variable(c, 'username', 'leo');
  dbms_sql.bind_variable(c, 'password', '123');
  -- 执行sql,并返回结果
  n := dbms_sql.execute(c);
  commit;
  -- 关闭游标
  dbms_sql.close_cursor(c);
exception
  when others then
    -- 处理异常
    dbms_output.put_line('异常:' || sqlerrm);
    rollback;
end;

dbms_output.put_line用来在command窗口打印日志,如果没打印日志:

1、set serveroutput on;

2、execute my_procedure;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值