create FUNCTION dbo.f_rq(@rq varchar(20),@bl varchar(20))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+rtrim(货物)
FROM hw
WHERE ' + @bl + '= @rq
RETURN(@re)
END
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+rtrim(货物)
FROM hw
WHERE ' + @bl + '= @rq
RETURN(@re)
END
declare @sqlstr nvarchar(4000),@return int
set @sqlstr = 'select @result=1 from ' + @tablename + ' where '+ @columnname +'= '''+@columnvalue + ''''
exec sp_executesql @sqlstr,N'@result int output',@return output
RETURN @return
在存储过程里面去用.
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100) ,@sql nvarchar(1000)
SET @re=''
set @sql = N'SELECT @re=@re+rtrim(货物)
FROM hw
WHERE ' + @bl + '= @rq'
exec sp_executesql @sql,N'@re varchar(100) output',@re output RETURN(@re)
END
insert into a select '王'create proc pr_rq
@name varchar(20),@value varchar(20)
as
exec('select * from a where '+@name+'='''+@value+'''')exec pr_rq 'name','王'王
exec ('SELECT @re=@re+rtrim(货物)
FROM hw
WHERE ' + @bl + '= @rq')
因为你这里执行的是一个SQL字符串,所以,你只要把语句改成:
exec ('SELECT '+@re=@re+'rtrim(货物)
FROM hw
WHERE ' + @bl + '= '+@rq) 如还有问题欢迎交流。
exec ('SELECT @re=@re+rtrim(货物)
FROM hw
WHERE ' + @bl + '= @rq')
因为你这里执行的是一个SQL字符串,所以,你只要把语句改成:
exec ('SELECT '+@re+'='+@re+'rtrim(货物)
FROM hw
WHERE ' + @bl + '= '+@rq) 如还有问题欢迎交流。
在存储过程里面用动态的sql
函数无法达到你的要求,至少在2000下无法实现
[/Quote]
不是就返回一个 变量的值吗 用 EXECUTESQL 的OUTPUT 返回也可以declare @rq varchar(20),@bl varchar(20)
declare @sql nvarchar(1000)
declare @re varchar(100)
set @re=''
set @sql='SELECT @re=@re+rtrim(货物) FROM hw WHERE '+@bl+'='+@rqexec sp_executesql @sql,N'@re nvarchar(1000) output',@re outputselect @re