2
I wanted to assign the value of the last item registered in the table alu_cod
, but the query returns me error after the @total =
:
declare @total int
select @total = SELECT TOP 1 * FROM Alunos ORDER BY
Alu_COD DESC
select @total
2
I wanted to assign the value of the last item registered in the table alu_cod
, but the query returns me error after the @total =
:
declare @total int
select @total = SELECT TOP 1 * FROM Alunos ORDER BY
Alu_COD DESC
select @total
2
Your syntax is incorrect. You can assign the value of a SELECT to a variable as follows:
Using SELECT:
SELECT TOP 1 @total = Alu_COD
FROM Alunos
ORDER BY Alu_COD DESC
SELECT @total
Set
SET @total= (SELECT TOP 1 Alu_COD
FROM Alunos
ORDER BY Alu_COD DESC )
SELECT @total
Heed by using the first alternative. If your query returns more than one record (this is not the case here, because it is using TOP), this alternative will assign the variable the last record that is returned by the query, without showing any error message (this may cause bugs in your application/script). The second alternative, using SET, under the same circumstances will show an error message.
Above are examples on how to assign the value of a single column to a variable, if you want to select the complete record, you have to define a variable for each column in SELECT or, preferably, define a TABLE VARIABLE.
Using a variable table
DECLARE @alunos TABLE (
Alu_COD int,
Alu_NOME VARCHAR(50),
Alu_DATA_REGISTO DATE
)
INSERT INTO @alunos (Alu_COD, Alu_NOME, Alu_DATA)
SELECT TOP 1 Alu_COD, Alu_NOME, Alu_DATA
FROM Alunos
ORDER BY Alu_COD DESC
Defining the variables individually
DECLARE @Alu_COD int,
@Alu_NOME VARCHAR(50),
@Alu_DATA_REGISTO DATE
SELECT TOP 1 @Alu_COD = Alu_COD,
@Alu_NOME = Alu_NOME,
@Alu_DATA_REGISTO = Alu_DATA_REGISTO
FROM Alunos
ORDER BY Alu_COD DESC
Browser other questions tagged c# sql-server
You are not signed in. Login or sign up in order to post.