函数里动态实现sql

xyktc_123 2009-03-13 02:24:34
我想在函数里动态执行sql,不知道可以不?

ALTER function [dbo].[test]

(

@tableName varchar(50) ,
@columnName varchar(50),
@id int
)

returns nvarchar(50)

as

begin
declare @str nvarchar(50)
declare @v int
select @v = @columnName from @tableName where id = @id
select @str = show from tb_param where table_name = @tableName and column_name = @columnName and [value] = @v
return @str

end
这样写会报错,说@tableName没有声明,请高手帮忙改改!!
...全文
89 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdhdy 2009-03-22
  • 打赏
  • 举报
回复
执行动态语句的话,建议楼主写存储过程吧。
htl258_Tony 2009-03-22
  • 打赏
  • 举报
回复
不能,因为不能用exec
ision 2009-03-22
  • 打赏
  • 举报
回复
真是不好意思,函数里不能使用动态SQL.
你可以考虑用SP实现,
返回值是@str.
建这个SP后,在函数中调用这个SP.返回@str.
xyktc_123 2009-03-13
  • 打赏
  • 举报
回复
怎么使用动态的sql,请教?
ision 2009-03-13
  • 打赏
  • 举报
回复
FROM 后面接表或视图,所以变量或传进来的参数也应该是表或表变量。
用动态SQL可能会解决你的问题。
DECLARE @sql NVARCHAR(max)
SET @sql= N'SELECT '+''+@v+''+'='+''+@columnName+''+'FROM '+''+@tableName+''+'WHERE ID='+''+@id+''
ks_reny 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 xyktc_123 的帖子:]
我想在函数里动态执行sql,不知道可以不?

ALTER function [dbo].[test]

(

@tableName varchar(50) ,
@columnName varchar(50),
@id int
)

returns nvarchar(50)

as

begin
declare @str nvarchar(50)
declare @v int
select @v = @columnName from @tableName where id = @id
select @str = show from tb_param where table_name = @tableName and column_name = @columnName a…
[/Quote]
動態SQL語句要用exec(sql)執行.
dobear_0922 2009-03-13
  • 打赏
  • 举报
回复
函数里不用使用动态语句
nj_1st_excellence 2009-03-13
  • 打赏
  • 举报
回复
"select @v = @columnName from @tableName where id = @id "是这句话有问题

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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