我想插入一条记录,然后使用存储过程返回该记录的详细信息:
USE
TEST
GO
CREATE PROCEDURE AddProject(
-- In
@_title NVARCHAR(200),
@_description NVARCHAR(MAX),
-- Out
@Title NVARCHAR(200) OUT,
@Description NVARCHAR(MAX) OUT)
AS
BEGIN
SELECT
[ProjectsTable.ProjectID],
[Title],
[Description]
FROM
(INSERT INTO [Projects] ("Title", "Description")
OUTPUT inserted.ProjectID
VALUES (@_title, @_description)) ProjectsTable
END
我收到此错误,我做错了什么?
消息 10729,级别 15,状态 1,过程 AddProject,第 31 行
如果 SELECT 语句不是 INSERT 语句的直接行源,则不允许在 SELECT 语句中使用嵌套的 INSERT、UPDATE、DELETE 或 MERGE 语句。
感谢解答:
程序最终是这样的:
USE
TEST
GO
CREATE PROCEDURE AddProject(
-- In
@_title NVARCHAR(200),
@_description NVARCHAR(MAX),
-- Out
@ProjectID INT OUT,
@Title NVARCHAR(200) OUT,
@Description NVARCHAR(MAX) OUT
)
AS
BEGIN
BEGIN TRAN
INSERT INTO
[Projects]
("Title", "Description")
VALUES
(@_title, @_description)
SET @ProjectID = SCOPE_IDENTITY();
SELECT
@Title = [Title],
@Description = [Description]
FROM
[Projects]
WHERE
[Projects].[ProjectID] = @ProjectID
COMMIT
END
我这样称呼它:
Declare @ProjectID as INT
Declare @Title as NVARCHAR(200)
Declare @Description as NVARCHAR(MAX)
EXEC AddProject "Test project", "A test project", @ProjectID output, @Title output, @Description output
SELECT @ProjectID, @Title, @Description