Native Dynamic SQL

原创 2013年12月06日 09:18:33

1.Dynamic SQL with DML Statements

●Deleting rows from any table:

create function del_rows(table_name varchar2)
return number is
begin
  execute immediate 'delete from '||table_name;
  return sql%rowcount;
end;

begin
  dbms_output.put_line(
         del_rows('employee_names')||' rows deleted.');
end;
●Inserting a row into a table with two columns:

create procedure add_row(
       table_name varchar2,
       id number,
       name varchar2) is
begin
  execute immediate 'insert into '||table_name|| 
                    'values (:1,:2)' using id,name;
end;

2.Dynamic SQL with a Single-Row Query

create or replace function get_emp(emp_id number)
return employees%rowtype is
stmt varchar2(200);
emprec employees%rowtype;
begin
  stmt:='select * from employees '||'where employee_id=:id';
  execute immediate stmt into emprec using emp_id;
  return emprec;
end;
------------------------------------------------------------
declare
  emprec employees%rowtype := get_emp(100);
begin
  dbms_output.put_line('emp:'||emprec.last_name);
end;

3.Dynamic SQL with a Multirow Query

create or replace procedure list_employees(deptid number) is
  type emp_refcsr is ref cursor;
  emp_cv emp_refcsr;
  emprec employees%rowtype;
  stmt varchar2(200) := 'select * from employees';
begin
  if deptid is null then 
     open emp_cv for stmt;
  else
     stmt:=stmt ||' where department_id = :id';
  open emp_cv for stmt using deptid;
  end if;
  loop
    fetch emp_cv into emprec;
    exit when emp_cv%notfound;
    dbms_output.put_line(emprec.department_id ||''||emprec.last_name);
  end loop;
  close emp_cv;
end;

4.Dynamically Executing a PL/SQL Block

create function annual_sal(emp_id number)
return number is
       plsql varchar2(200) :=
             'DECLARE '||
             ' emprec employees%ROWTYPE; '||
             'BEGIN '||
             ' emprec := get_emp(:empid); '||
             ' :res := emprec.salary * 12; '||
             'END;';
       result NUMBER;
BEGIN
  EXECUTE IMMEDIATE plsql USING in emp_id,out result;
  RETURN result;
END;

5.Using Native Dynamic SQL to Compile PL/SQL Code

create or procedure complie_plsql(
       name varchar2,
       plsql_type varchar2,
       options varchar2:=null) is
   stmt varchar2(200):='alter '||plsql_type||''||name||' compile ';
begin
  if options is not null then
    stmt := stmt||''||options;
  end if;
  execute immediate stmt;
end;


相关文章推荐

How to Load a Java Native/Dynamic Library (DLL)

(MS Windows) How to Load a Java Native/Dynamic Library (DLL) There are several ways to make it pos...

mybatis(ibatis)中的动态sql<dynamic prepend="where"><isNotEmpty>的讲解

ibatis的文档中,关于动态SQL的举例如下:  Java代码   "someName" parameterClass="Account" resultMap="accoun...

NHibernate SQL优化小技巧使用dynamic-insert="true" insert="true"

================testSaveUser================= Hibernate: insert into Users (age, firstname, lastnam...

PL/SQL Developer工具登陆一个新创建的用户进行查询时报Dynamic Performance Tables not accessible

今天用PL/SQL Developer工具登陆一个新创建的用户进行查询时报Dynamic Performance Tables not accessible 错误 Automatic s...

SQL Server 2016新特性:动态数据屏蔽(Dynamic Data Masking)

动态数据屏蔽是SQL Server 2016引入的一项新的特性,通过数据屏蔽,你可以对非授权用户限制敏感数据的曝光。动态数据屏蔽会在查询结果集里隐藏指定栏位的敏感数据,而数据库中的实际数据并没有任何...

Dynamic SQL(Apress,2016)

  • 2016年05月03日 23:51
  • 13.15MB
  • 下载

ibatis_3.0_Dynamic_Sql_设计解析

  • 2011年10月28日 21:27
  • 328KB
  • 下载

MyBatis动态SQL之动态返回列(Dynamic Column)

一,业务描述 最近单位有这样一个报表,根据选择的年份返回年份的列,比如,选择 城市,2015,2016年,那么返回列就是三列,城市,2015年数据,2016年数据,如果是只返回城市 , 2016年数据...

Microsoft SQL Server 2012 Native Client

  • 2016年10月10日 14:36
  • 5.58MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Native Dynamic SQL
举报原因:
原因补充:

(最多只允许输入30个字)