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