重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用plsql存储过程制造一个脚本如:
创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为日土企业提供专业的做网站、成都网站设计,日土网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
create or replace procedure test_val
(etl_date varchar2, --时间或者数字变量
data out sys_refcursor ---存放数据
) as
s_sql varchar2(1000); --执行sql
begin
s_sql := 'SELECT A,B FROM tsalpludetail' || etl_date ;
--dbms_output.put_line(s_sql);----打印sql可以不需要
open data for s_sql; ---把结果集放入data
end test_val;
执行后,打开存储过程
最后查看数据
至此完成
我没看懂你写的脚本。
第一:pabsme_t_mindate 表里面有几个字段?如果就两个字段,那还好,如果有2个以上字段,写的语句不对:insert into pabsme_t_mindate
select min(data_date),'sme.qq'||(select en_t_name from pabsme_vw_table where serial_number=t_number);
第二:在select语句中,第二个查询字段不需要用子查询语句吧?
create proc selectName
as
begin
declare @sql varchar(100)
declare @name varchar(20)
select @name = name from sysobjects where xtype='U' and id=373576369
print @name
set @sql='select * from '+ @name --拼接
exec (@sql)
end
exec selectName --执行
仅供参考!
拼接字段 select 字段1||字段2||字段3... from a;
update b set X字段=(select 字段1||字段2||字段3... from a);
单纯的通过sql应该是比较麻烦吧,
给出一个思路
数据库定义一个函数fn_xxx,
declare
--定义变量记录拼接结果
v_result varchar2(100):='';
begin
--循环拼接
for x in (select a1,a2,a3 from 表名 where 条件) loop
v_result:=v_result||' and '|| x.a1||' and '||x.a2||' and '||x.a3
end loop;
--最终的结果类似于 and a10 and b20 and a15 这样
end;
这个函数,返回的就是需要的字符串
使用的时候看看怎样把这个函数放到sql里,这里要注意
办法是有的,就是特别麻烦,需要又重循环,第一重,循环所有表,第二重,循环特定表中的字段,然后将所有满足条件的表名和字段名插入到一张新的表中,然后再自己分析结果,确认究竟是哪个表哪个字段, 仅提供思想而已,需要息写一个procedure 或者function实现。