与SQL Server中的EXEC功能相关的问题

时间:2012-09-10 13:57:01

标签: c# sql-server

我在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函数的结果?

感谢。

2 个答案:

答案 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