无从下手,请高手支招。

zzczll 2011-08-15 01:30:38
我写了一个视图,因为字段太多了,也为了以后表结构改变,用*代替所有列,但是我又希望把视图中的字段都转成标准的别名,有另外一个表存放了字段名和标准别名的对照。如何能做到让两者关联起来,形成一个具备标准别名的视图呢。其实就是能做到动态分配别名。
请高手指教一二,谢谢!
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzczll 2011-08-15
  • 打赏
  • 举报
回复
非常感谢提供思路,我稍微改了一下。有点问题就是如果视图中引用了别的表的视图,某个表名称变了这里的修改就有问题了。不过这种情况比较少,当前问题解决了,非常感谢。
create PROCEDURE [dbo].[sp_search_change]
@view_name varchar(50)
AS
declare @cur cursor
declare @fname varchar(200)---对应表,视图中的字段
declare @bname varchar(200)---转成标准的别名

set @cur=CURSOR FOR SELECT distinct rtrim(a.name) as key_field,rtrim(isnull(c.chinese,a.name)) as key_name from syscolumns a left outer join sysobjects b on a.id=b.id left outer join tbaccountset_km c on a.name=c.code where b.name=@view_name
OPEN @cur
FETCH NEXT FROM @cur INTO @fname,@bname
WHILE (@@FETCH_STATUS = 0)
begin
declare @total_var varchar(200)
set @total_var=@view_name+'.'+@fname
EXEC sp_rename @total_var,@bname,'COLUMN'

FETCH NEXT FROM @cur INTO @fname,@bname
END
CLOSE @cur
DEALLOCATE @cur
快溜 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiemo587 的回复:]
引用 3 楼 ssp2009 的回复:
这个很难实现,视图里无法动态执行sql。



可以用循环写吗?
[/Quote]不能,什么都不能
--小F-- 2011-08-15
  • 打赏
  • 举报
回复
你这个何必写成视图??用存储过程来实现吧
jiemo587 2011-08-15
  • 打赏
  • 举报
回复


--LZ按照描述改改测试一下,看看行不行
declare @字段名 varchar(200)---对应表,视图中的字段
declare @标准别名 varchar(200)---转成标准的别名

DECLARE OnceCustomerUpgrade CURSOR FOR
select 标准别名,字段名 from 对应表

OPEN OnceCustomerUpgrade
FETCH NEXT FROM OnceCustomerUpgrade INTO @标准别名,@字段名
WHILE (@@FETCH_STATUS = 0)

begin
declare @total_var varchar(200)
set @total_var='视图名.'+@字段名
EXEC sp_rename @字段名,@标准别名,'COLUMN'

FETCH NEXT FROM OnceCustomerUpgrade INTO @标准别名,@字段名
END
CLOSE OnceCustomerUpgrade --关闭游标
DEALLOCATE OnceCustomerUpgrade

--如果测试不通,告诉原因

jiemo587 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ssp2009 的回复:]
这个很难实现,视图里无法动态执行sql。
[/Quote]


可以用循环写吗?
快溜 2011-08-15
  • 打赏
  • 举报
回复
这个很难实现,视图里无法动态执行sql。
jiemo587 2011-08-15
  • 打赏
  • 举报
回复
应该不是很难,给点测试数据
chuanzhang5687 2011-08-15
  • 打赏
  • 举报
回复
ou bu xiao de

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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