2

数式があります。数式は「2+5+8/3」のような nvarhcar です

式を計算した後に次のような結果が得られる関数を作成したい

alter FUNCTION Calculate(@Formula NVARCHAR(100))
RETURNS FLOAT
AS
BEGIN
DECLARE @Result2 FLOAT,@Query NVARCHAR(50)
SET @Query=N'select @Result='+@Formula
execute sp_executesql @Query ,N'@Result float output',@Result=@Result2 OUTPUT
RETURN @Result2
END

関数は正常に作成されましたが、関数を使用しています

select dbo.Calculate('2+5+9') 「関数内から実行できるのは、関数と拡張ストアド プロシージャのみです」というエラーが表示されます。このような関数を作成するにはどうすればよいですか?どうもありがとう

回答ありがとうございますが、選択クエリで使用します。私のデータはそのようなものです

Name Formula Result
dd    2+3+5
gg    1+4+7
hh    2*8
jj    3*9
Kl    8*9

結果列を選択して計算する必要があります

Name,dbo.Calculate(Formula) を結果として選択しますそれを作る別の方法はありますか

4

2 に答える 2

1

関数には通常使用できない制限FUNCTIONがあるため、おそらく a を作成したくないでしょう。それらは副作用がないことを意図しており、その保証を回避するために使用される可能性があります.PROCEDUREEXECUTEEXEC

于 2012-12-07T21:22:57.593 に答える
0

次のようなことができます:

Create Proc Proc1

As

Begin

Select 'SQL Server'

End

Go

関数を作成する

Create Function dbo.Function1() Returns @Result Table
(

    Result Varchar(100)

 )

 As

Begin   

Insert @Result

SELECT * from OPENROWSET('SQLNCLI10', 'Server=<SERVERNAME>;UID=<LOGIN>;Pwd=     <PASSWORD>;',

        'Exec dbo.Proc1') AS C 

Return

 end

  Go

関数の実行

  Select * from dbo.Function1()

これがお役に立てば幸いです....

于 2012-12-09T05:07:02.360 に答える