0

次のように、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 変数に格納したいと考えています。上記の 2 つのステートメントをユーザー定義関数に記述しましたが、上記の 2 つのステートメントから int を返したいと考えています。

これどうやってするの?このような結果を割り当てることは可能ですか?

Declare @result int

set @result = exec(@P1)

次のようなエラーがスローされます。incorrect syntext near Exec

SQL Server のユーザー定義関数で Exec 関数から結果を返すにはどうすればよいですか?

ありがとう。

4

2 に答える 2

0

@a varchar(10) を宣言します

@b int を宣言する

@a='2 * 3'; を設定します。

EXEC ('select' + @a)

@res int / ???を宣言します。/;

@sql nvarchar(max) を宣言します。

set @sql = N'SELECT @res = ' + @a;

exec sp_executesql @sql, N'@res int OUTPUT', @res = @res OUTPUT;

@b=@res を設定

@b を選択

于 2013-05-29T16:42:12.927 に答える
0

EXECユーザー定義関数では使用できません。とにかくなぜこれをやろうとしているのですか?

于 2012-09-10T14:03:03.950 に答える