Sql server 将数据从函数传递到变量
我想将数据从函数传递到变量,但我遇到了一个错误Sql server 将数据从函数传递到变量,sql-server,tsql,Sql Server,Tsql,我想将数据从函数传递到变量,但我遇到了一个错误 DECLARE @KullaniciID int SET @KullaniciID = SELECT GetActivePersonelID 错误: 关键字“select”附近的语法不正确 功能: CREATE FUNCTION [dbo].[F15_GetActivePersonelID] (@P int) RETURNS int AS BEGIN DECLARE @KullaniciID int SET @Kulla
DECLARE @KullaniciID int
SET @KullaniciID = SELECT GetActivePersonelID
错误:
关键字“select”附近的语法不正确
功能:
CREATE FUNCTION [dbo].[F15_GetActivePersonelID]
(@P int)
RETURNS int
AS
BEGIN
DECLARE @KullaniciID int
SET @KullaniciID = (SELECT KullaniciID FROM IT15_Kullanicilar
WHERE KullaniciKodu = dbo.F15_GetKullaniciConn ())
RETURN (SELECT MAX(PersonelID) FROM IT01_Personel
WHERE KullaniciID = @KullaniciID)
END
选项1,通过设置:
SET @KullaniciID = (SELECT [dbo].[F15_GetActivePersonelID](123))
选项2,使用内联语法:
SELECT @KullaniciID = [dbo].[F15_GetActivePersonelID](123)
我建议避免在SQL Server中使用标量函数,因为已知的性能和扩展问题。
不过,SQL Server 2019有一些改进。
SELECT
不能在=
运算符之后使用。您可能需要使用子查询,或者最初使用SELECT
而不是SET
。我不能使用as SET@kullanicid=GetActivePersonelID。错误是无效的列名“GetActivePersonelID”。函数在@EmreYıldırım之后有括号(()
)F15\u GetActivePersonelID本身将引用一列,而不是函数,就像从dbo选择GETDATE一样。MyTable
实际上将从表MyTable
返回名为GETDATE
的列的值,而不是从函数GETDATE()
返回的当前日期和时间。