动态SQL
1。有时候静态SQL很笨,很木馁,
例如:
temp_str 是变量=chr(39) || first_str || ''',''' || mid_number || chr(39);
temp_str 的值应该为'A123','A23e'
侧执行下面的静态SQL却达不到实际的效果(select rwt.serial_number , rst.lot_no , from rst, rwt where rwt.serial_number in ('A123','A23e'))不会执行 下面的SQL
select rwt.serial_number ,
rst.lot_no ,
from rst, rwt
where rwt.serial_number in (temp_str )
2。解决以上的办法只有 用动态SQL:
在含有 存储过程的包中 定义游标
create or replace package SMT_user_package is
type H_Numbers is ref cursor;
procedure Get_Lot_Number(v_serial_sn in varchar2,
Lot_numbers out H_Numbers)
此存储过程中的SQL:
temp_str 是变量=chr(39) || first_str || ''',''' || mid_number || chr(39);
string s_sql;
s_sql='select rwt.serial_number ,
rst.lot_no ,
from rst, rwt
where rwt.serial_number in ('||temp_str ||')'
open Lot_numbers for s_sql;
侧执行上面的SQL字符串到达实际的效果(select rwt.serial_number , rst.lot_no , from rst, rwt where rwt.serial_number in ('A123','A23e'))
评论
可以考虑把temp_str的值插入临时表
这样检索依据就成为以下形式,
select
rwt.serial_number ,
rst.lot_no ,
from rst, rwt
inner join temp_table x on
rwt.serial_number = x.temp_str
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 2559 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
一个截取字符串的方法
呵呵谢谢各位,我是想让他成为一个通用的东西,以后在编写存储过程时,可以直接用,就 ...
-- by 心似海 -
动态SQL
既然是存储过程,当temp_str的值有很多的时候, 可以考虑把temp_str ...
-- by armorking -
一个截取字符串的方法
用函数跑得会比较慢。。。不如再来个表像二楼说的1:N 想了想,写成下面这样貌视 ...
-- by qiuyuanshan -
一个截取字符串的方法
明明A、B两个字段是1:N关系, 用两张主从关系的表来描述,非常轻松 却偏偏要把 ...
-- by armorking -
NET递归调用10转(2-34) ...
Int32.ToString(34);
-- by deerchao






评论排行榜