首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问sp_executesql函数的使用

2012-02-28 
请教sp_executesql函数的使用我写一个函数实现将一列里的数据以分隔的形式连起来,并用在Select中,但是函

请教sp_executesql函数的使用
我写一个函数实现将一列里的数据以;分隔的形式连起来,并用在Select中,但是函数是写出来了,sp_executesql不能在函数中调用,不知道还没有其它的解决办法?请大家帮帮忙,以下这是我写的函数

CREATE   FUNCTION   uf_GetSARY(@ajbs   VARCHAR(64),@SARYTableName   VARCHAR(64))
RETURNS   VARCHAR(8000)
AS
BEGIN
    DECLARE   @sql   VARCHAR(8000)
    DECLARE   @NAME   VARCHAR(8000)
    SET   @sql= 'DECLARE   @NAME   VARCHAR(8000) '+CHAR(13)
    SET   @sql=@sql+ 'SET   @NAME= ' ' ' ' '+CHAR(13)
    SET   @sql=@sql+ 'SELECT   @NAME=@NAME+ ' '; ' '+F_NAME   FROM   PT_AJRYBASE   INNER   JOIN   '+@SARYTableName+ '   ON   PT_AJRYBASE.F_ID= '+@SARYTableName+ '.F_RYID   WHERE   '+@SARYTableName+ '.F_AJBS= ' ' '+@ajbs+ ' ' ' '+CHAR(13)
    SET   @sql=@sql+ 'SET   @NAME=STUFF(@NAME,1,1, ' ' ' ') '
    EXECUTE   sp_executesql   @sql,N '@NAME   VARCHAR(8000)   output ',@NAME   output
    RETURN   @NAME
END


[解决办法]
改成存储过程实现吧,函数里不能用动态SQL
[解决办法]
使用存儲過程吧。

CREATE PROCEDURE uf_GetSARY(@ajbs VARCHAR(64),@SARYTableName VARCHAR(64), @NAME VARCHAR(8000) output)
AS
BEGIN
DECLARE @sql VARCHAR(8000)
SET @sql= 'DECLARE @NAME VARCHAR(8000) '+CHAR(13)
SET @sql=@sql+ 'SET @NAME= ' ' ' ' '+CHAR(13)
SET @sql=@sql+ 'SELECT @NAME=@NAME+ ' '; ' '+F_NAME FROM PT_AJRYBASE INNER JOIN '+@SARYTableName+ ' ON PT_AJRYBASE.F_ID= '+@SARYTableName+ '.F_RYID WHERE '+@SARYTableName+ '.F_AJBS= ' ' '+@ajbs+ ' ' ' '+CHAR(13)
SET @sql=@sql+ 'SET @NAME=STUFF(@NAME,1,1, ' ' ' ') '
EXECUTE sp_executesql @sql,N '@NAME VARCHAR(8000) output ',@NAME output
END
[解决办法]
up
[解决办法]
输出参数 Output

热点排行