如何使用 Select SQL 在函数内设置变量
How to Set a variable inside a Function with Select SQL
我需要创建一个函数,该函数 returns 来自在特定员工下工作的员工 table。
我尝试编写以下内容,但出现错误:
An INSERT statement cannot contain a SELECT statement that assigns values to a variable.
CREATE FUNCTION GetSubTree (@SupervisorID int)
RETURNS @Result TABLE(
Id INT PRIMARY KEY NOT NULL,
HIERARCHY HIERARCHYID NOT NULL ,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
NationalCode bigint NOT NULL,
EmployeeRole NVARCHAR(3) NOT NULL
)
AS
BEGIN
DECLARE @hi HIERARCHYID;
DECLARE @hiT TABLE(
HI HIERARCHYID
)
INSERT into @hiT
SELECT Top 1 @hi= HIERARCHY
FROM dbo.Company as C1
WHERE C1.Id = @SupervisorID;
INSERT INTO @Result
SELECT *
FROM dbo.Company as C
WHERE C.HIERARCHY.IsDescendantOf(@hi) = 1 AND C.Id != @SupervisorId;
RETURN;
End;
感谢任何帮助
拆分命令
CREATE FUNCTION GetSubTree (@SupervisorID int)
RETURNS @Result TABLE(
Id INT PRIMARY KEY NOT NULL,
HIERARCHY HIERARCHYID NOT NULL ,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
NationalCode bigint NOT NULL,
EmployeeRole NVARCHAR(3) NOT NULL
)
AS
BEGIN
DECLARE @hi HIERARCHYID;
DECLARE @hiT TABLE(
HI HIERARCHYID
)
SELECT Top 1 @hi= HIERARCHY
FROM dbo.Company as C1
WHERE C1.Id = @SupervisorID;
INSERT into @hiT
VALUES
(@hi)
INSERT INTO @Result
SELECT *
FROM dbo.Company as C
WHERE C.HIERARCHY.IsDescendantOf(@hi) = 1 AND C.Id != @SupervisorId;
RETURN;
End;
我需要创建一个函数,该函数 returns 来自在特定员工下工作的员工 table。
我尝试编写以下内容,但出现错误:
An INSERT statement cannot contain a SELECT statement that assigns values to a variable.
CREATE FUNCTION GetSubTree (@SupervisorID int)
RETURNS @Result TABLE(
Id INT PRIMARY KEY NOT NULL,
HIERARCHY HIERARCHYID NOT NULL ,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
NationalCode bigint NOT NULL,
EmployeeRole NVARCHAR(3) NOT NULL
)
AS
BEGIN
DECLARE @hi HIERARCHYID;
DECLARE @hiT TABLE(
HI HIERARCHYID
)
INSERT into @hiT
SELECT Top 1 @hi= HIERARCHY
FROM dbo.Company as C1
WHERE C1.Id = @SupervisorID;
INSERT INTO @Result
SELECT *
FROM dbo.Company as C
WHERE C.HIERARCHY.IsDescendantOf(@hi) = 1 AND C.Id != @SupervisorId;
RETURN;
End;
感谢任何帮助
拆分命令
CREATE FUNCTION GetSubTree (@SupervisorID int)
RETURNS @Result TABLE(
Id INT PRIMARY KEY NOT NULL,
HIERARCHY HIERARCHYID NOT NULL ,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
NationalCode bigint NOT NULL,
EmployeeRole NVARCHAR(3) NOT NULL
)
AS
BEGIN
DECLARE @hi HIERARCHYID;
DECLARE @hiT TABLE(
HI HIERARCHYID
)
SELECT Top 1 @hi= HIERARCHY
FROM dbo.Company as C1
WHERE C1.Id = @SupervisorID;
INSERT into @hiT
VALUES
(@hi)
INSERT INTO @Result
SELECT *
FROM dbo.Company as C
WHERE C.HIERARCHY.IsDescendantOf(@hi) = 1 AND C.Id != @SupervisorId;
RETURN;
End;