怎样在SQL SERVER里实现象JAVA里的那个eval()函数那样的功能?

半截烟头 2006-06-26 09:29:19
如题
比如,select @t1="TABLE1","TABLE1"是一个字符串,怎么样在视图或存储过程里使用这个参数进行查询?
象这样:SELECT * FROM @t1 是不行的,要怎么办?
...全文
232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
半截烟头 2006-06-27
  • 打赏
  • 举报
回复
明白,结贴,各位接分
hellowork 2006-06-27
  • 打赏
  • 举报
回复
所有通过参数传递的表名称或列名称都是字符串,而不是真正的表对象或列对象.所以在过程内使用它们的时候必须使用字符串连接符"+"生成SQL语句字符串,这个SQL字符串就叫动态SQL,然后使用EXEC执行这个字符串,象一楼展示的那样.
如果参数不是数据库对象,只是条件值,则可以直接使用:
create proc #x @id int
as
select * from mytable where id = @id
go
hellowork 2006-06-27
  • 打赏
  • 举报
回复
N表示其后面的是UNICODE字符.
半截烟头 2006-06-27
  • 打赏
  • 举报
回复
TO zjdyzwx(十一月猪):
N'select * from pubs.dbo.employee where job_lvl = @level',
N'@level tinyint',
语句前面带N是什么意思啊,我看到过好多,就是还没明白
新鲜鱼排 2006-06-26
  • 打赏
  • 举报
回复
declare @s varchar(1000),@t1 varchar(100)
set @s='SELECT * FROM '+ @t1
exec(@s)
liangpei2008 2006-06-26
  • 打赏
  • 举报
回复
又是动态SQL!
十一月猪 2006-06-26
  • 打赏
  • 举报
回复
sp_excutesql
==============================================================================
execute sp_executesql
N'select * from pubs.dbo.employee where job_lvl = @level',
N'@level tinyint',
@level = 35

楼主是这个意思吗?
半截烟头 2006-06-26
  • 打赏
  • 举报
回复
呵呵,我本来是用EXEC来执行字符串的,但觉得写语句太麻烦,特别是一条语句中有多个变量时.
谢hellowork()让我死心.
hellowork 2006-06-26
  • 打赏
  • 举报
回复
明确并肯定的告诉你,没有楼主说的功能,只能构建SQL字符串,然后EXEC之,象楼上那样.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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