[英]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.