麻烦把SQL语句转成Oracle语句

luofenghen 2011-06-29 03:23:23
如题,在线等

declare @sql varchar(8000)
set @sql='select ( '
select @sql = @sql +'''' + unit_short_name + ',' +''''
from (select distinct unit_short_name,unit_id from unit_info) as a
set @sql = @sql +') as unit_short_name'

exec(@sql)
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yejihui9527 2011-06-29
  • 打赏
  • 举报
回复
语法就是这个
execute immediate strsql into strunit_short_name,strunit_id;
至于怎么拼sql 那是逻辑问题啊
Rotel-刘志东 2011-06-29
  • 打赏
  • 举报
回复
修改语句了。
hanzs 2011-06-29
  • 打赏
  • 举报
回复

有循环你就改下strsql
strsql := 'select ';
for loop
strsql := strsql || ' unit_short_name ';
...
end loop;
execute immediate strsql into strunit_short_name,strunit_id;
...

luofenghen 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hanzs 的回复:]
SQL code


declare
strsql varchar2(4000); --varchar2最大4000
strunit_short_name varchar2(2000);
strunit_id varchar2(500);
begin
strsql := 'select unit_short_name,unit_id from (select dis……
[/Quote]
不是你想的那样的


select @sql = @sql +'''' + unit_short_name + ',' +''''
from (select distinct unit_short_name,unit_id from unit_info) as a

这句话是有循环的 如果照你那样拼的话就没循环了
hanzs 2011-06-29
  • 打赏
  • 举报
回复

declare
strsql varchar2(4000); --varchar2最大4000
strunit_short_name varchar2(2000);
strunit_id varchar2(500);
begin
strsql := 'select unit_short_name,unit_id from (select distinct unit_short_name,unit_id from unit_info) as a'; --语句自己拼写
execute immediate strsql into strunit_short_name,strunit_id;
...
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧