Jump to content

Sql - Ajuda em Stored Procedure


skcratch
 Share

Recommended Posts

Viva!

Estou a tentar criar uma stored procedure simples que verifique se um nome, que é passado como parâmetro, existe na tabela Pessoa.

USE [Aula 6]
GO

CREATE PROC spDeleteActor
@Nome NVARCHAR(200)
AS
IF((SELECT IdPessoa FROM Pessoa WHERE Nome = @Nome) = NULL)
BEGIN
	print 'A pessoa nao existe' 
END
ELSE
BEGIN
	print 'A pessoa existe'
END

GO

EXEC spDeleteActor 'Rui'

As minhas dúvidas residem na instrução IF, porque não sei qual é o valor de retorno da instrução SELECT caso a pessoa que procuro não exista. De notar o nome (Rui) que é passado na chamada da stored procedure não existe na base de dados e que é sempre imprimido 'A pessoa existe'.

Grato desde já por qualquer ajuda,

Cumps!

😄

Link to comment
Share on other sites

Boas,

Para resolveres este tipo de questões o mais fácil é usares as funções EXISTS / NOT EXISTS. Estas funções retornam um boleano, true caso exista algum tuplo e false caso não exista.

Para o teu SP ficaria assim:

IF(NOT EXISTS(SELECT IdPessoa FROM Pessoa WHERE Nome = @Nome))

Daniel Amorim

VP for xRTML

http://www.xrtml.org http://www.realtime.co

Link to comment
Share on other sites

Uma técnica comum é fazer um count, se retornar zero, então não existe. 😉

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.