簡體   English   中英

執行sp_executesql錯誤

[英]execute sp_executesql error

我有一個公式,公式是nvarhcar像'2 + 5 + 8/3'

我想做一個函數,在計算出我的公式后給我一個結果

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

函數創建成功,但是我使用了函數

選擇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)作為結果還有另一種制作方法

您可能不想創建一個FUNCTION而是一個PROCEDURE因為函數具有局限性,即它們通常不能使用EXECUTE 它們無副作用,並且EXEC可以用來規避該保證。

您可以像下面這樣:

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()

希望這對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM