我编写了以下SQL存储过程,它一直给我错误
@pid = SELECT MAX(...
整个过程是:
Alter PROCEDURE insert_partyco
@pname varchar(200)
AS
BEGIN
DECLARE @pid varchar(200);
@pid = SELECT MAX(party_id)+1 FROM PARTY;
INSERT INTO party(party_id, name) VALUES(@pid, @pname)
SELECT SCOPE_IDENTITY() as PARTY_ID
END
GO
有谁能告诉我这里我做错了什么?
答案 0 :(得分:5)
Alter PROCEDURE insert_partyco
@pname varchar(200)
AS
BEGIN
DECLARE @pid varchar(200);
SELECT @pid = MAX(party_id)+1 FROM PARTY;
INSERT INTO party(party_id, name) VALUES(@pid, @pname)
SELECT SCOPE_IDENTITY() as PARTY_ID
END
这比使用SET
的{{1}}更有优势,因为您可以在一个语句中选择多个变量中的表达式:
SELECT
答案 1 :(得分:0)
您需要使用SET。
Alter PROCEDURE insert_partyco
@pname varchar(200)
AS
BEGIN
DECLARE @pid varchar(200);
SET @pid = (SELECT MAX(party_id)+1 FROM PARTY);
INSERT INTO party(party_id, name) VALUES(@pid, @pname)
SELECT SCOPE_IDENTITY() as PARTY_ID
END
GO
或者,在您的情况下,您可以使party_id成为自动增量值,因此您无需查询该表。
答案 2 :(得分:0)
declare @total int
select @total = count(*) from news;
select * from news where newsid = @total+2
//**news** table name and **newsid** column name