易截截图软件、单文件、免安装、纯绿色、仅160KB

动态执行sql语句

execute immediate 语法
后面跟上sql语句可以动态执行sql语句.
使用场景:
(1)加入动态表.比如你有一张表的名字不明确,是需要判断得到的,则可以使用该语法来生成sql语句.
(2)加入动态字段.你根据判断,最终会加入同一张表,但是这张表根据不同的判断字段会有所不同,此时如果直接写sql是加不进去的,必须使用动态sql语句,让oracle编译时不判断字段是否与表匹配,这样的话才能动态加入字段.
例:
execute immediate 'insert into po_p_downloaddesc_' || table_languages(1) || '( contentid ) values(''' || s_contentid || ''')';
PS:要注意的地方.
(1)加入字段时,生成以后的sql语句要与非动态sql语句一模一样,也就是说,如果sql语句中有''的,那么在动态中也必须拼接''.
例如:
静态sql:insert into page values('123');
动态sql:execute immediate 'insert into page values('  ''123'' )';
中间俩个''123''最后生成'123'.语静态一样才可以插入,不然报错.
复合表类型如果是建一个类型的话
create or replace type type_table is table of varchar2(100);
那么在存储过程或函数或程序块中调用时必须初始化.
declare
  table_languages type_table := type_table();
begin
  table_languages.extend(2);
  --上面为复合表table_languages申明了2个空间,这样只有1和2可以用,3的话就会抛出越界
end;


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

SQL中EXISTS的用法


比如在Northwind数据库中  
  有一个查询为  
  SELECT   c.CustomerId,   CompanyName  
  from   Customers   c  
  WHERE   EXISTS(  
              SELECT   OrderID   from   ......

sql 日志管理


清除 SQL SERVER 2005 事务日志
1.右键在清除日志的数据库,如“TestDB”,点击[新建查询(Q)]
2.输入以下SQL语句,其中“TestDB”是数据库名称
DUMP TRANSACTION TestDB WITH NO_LOG
3.执行该SQL,成功后继续以下操作
4.右键该数据库节点,点击[任务(T)] -> [收缩(S)] -> [文件 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号