我在Varchar变量中编写了一些逻辑语句,如下所示:
declare @P1 as varchar(max)
set @P1 = ' (select (Convert(float,(SELECT COUNT(*) FROM AttendanceMaster AS innerAM WHERE
(AttendanceTypeId IN (SELECT TypeId FROM AttendanceTypeMaster AS innerATM WHERE
innerAM.ParshadId = '+@ParshadId+'
and (AttendanceSubjectId ='+Convert(varchar(5),@ASubjectId)+' ))) and innerAM.Attendance=''P1'''+ @innerWhereCondition +'))/6))'
现在我在Exec函数中执行了@ P1以上
exec(@P1)
现在我想获得在EXEC函数中执行的上述@ P1语句的结果 并希望存储在int变量中。我在用户定义的函数中写了两个语句,并希望从上面的两个语句返回int。
我该怎么做?是否可以分配这样的结果?
Declare @result int
set @result = exec(@P1)
它抛出错误说:incorrect syntext near Exec
如何从SQL Server中的用户定义函数返回Exec函数的结果?
感谢。
答案 0 :(得分:0)
您不能在用户定义的函数中使用EXEC
。你为什么要这样做呢?
答案 1 :(得分:0)
声明@a varchar(10)
声明@b int
设置@ a ='2 * 3';
EXEC('select'+ @a)
声明@res int / ??? /;
声明@sql nvarchar(max);
设置@sql = N'SELECT @res ='+ @a;
exec sp_executesql @sql,N'@ res int OUTPUT',@ are = @res OUTPUT;
设置@ b = @ res
选择@b