Sql server SQL Server 2012从函数返回的动态查询调用
我有一个标量值[return type nvarchar]函数,它返回一个动态查询字符串。 让我的功能如下Sql server SQL Server 2012从函数返回的动态查询调用,sql-server,Sql Server,我有一个标量值[return type nvarchar]函数,它返回一个动态查询字符串。 让我的功能如下 CREATE FUNCTION ABC ( ) RETURNS nvarchar(MAX) AS BEGIN return 'Select * from Table1' END Select * from dbo.ABC() 我想执行它如下 CREATE FUNCTION ABC ( ) RETURNS nvarchar(MAX) AS BEGIN return '
CREATE FUNCTION ABC
(
)
RETURNS nvarchar(MAX)
AS
BEGIN
return 'Select * from Table1'
END
Select * from dbo.ABC()
我想执行它如下
CREATE FUNCTION ABC
(
)
RETURNS nvarchar(MAX)
AS
BEGIN
return 'Select * from Table1'
END
Select * from dbo.ABC()
或
在SQL Server 2012中是否可能做到这一点?
我必须在不使用openquery的情况下完成它
-- My Actual Function --
ALTER FUNCTION [dbo].[RowToColumn]
(
-- Add the parameters for the function here
)
RETURNS nvarchar(MAX)
AS
BEGIN
DECLARE @PunchList nvarchar(MAX)
DECLARE @PunchListTOP nvarchar(MAX)
DECLARE @SQL nvarchar(MAX)
DECLARE @Flag INT
SET @PunchList = ''
SET @PunchListTOP = ''
DECLARE @I INT
SET @Flag = (select MAX(X) as MMAX from (select Employee_ID,Date_Of_Working, count(Date_Of_Working) as X from DataInOneRowStep3 group by Date_Of_Working ,Employee_ID ) A)
Set @I =1
WHILE (@I<= @Flag)
BEGIN
if (@PunchList = '' )
BEGIN
Set @PunchList = 'Punch_' + CONVERT(varchar, @I)
Set @PunchListTOP = ' MAX(Punch_' + CONVERT(varchar, @I) +') Punch_' + CONVERT(varchar, @I)
END
else
BEGIN
Set @PunchList = @PunchList + ',' + 'Punch_' + CONVERT(varchar, @I)
Set @PunchListTOP =@PunchListTOP +','+ ' MAX(Punch_' + CONVERT(varchar, @I) +') Punch_' + CONVERT(varchar, @I)
END
SET @I = @I + 1
END
SET @SQL ='SELECT Employee_Id,Date_OF_Working,Shift_Id,'+@PunchListTOP+' FROM (
SELECT * from DataInOneRowStep4
) as s
PIVOT
(
MAX(EntryTime)
FOR Punch IN ('+@PunchList+')
)AS piv group by Employee_Id,Date_OF_Working,Shift_Id'
RETURN @SQL
END
您不能在用户定义的函数中返回NVARCHARMAX数据类型…再加上您想要执行上述操作的事实,使我怀疑您做错了什么…是时候了解表值用户函数了。从这里开始。好的。。。对不起,我不能理解。为什么我不能返回NVARCHARMAX?我已经这样做了,代码在Select dbo.ABCAL中运行良好,因此不能在udf中使用动态sql