如何在查询(SQL Server)中使用SQL变量?

时间:2013-10-05 13:47:29

标签: sql sql-server variables stored-procedures

我编写了以下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

有谁能告诉我这里我做错了什么?

3 个答案:

答案 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