Aeehh, conforme o prometido tamo ai.

O post de hoje eh sobre  como criar uma stored procedure no sql server passando parametros no momento da execucao.

Primeiro… vamos criar uma tabela:

CREATE TABLE [DBO].EMPLOYER
(
EMPCOD        INT    IDENTITY(1,1) NOT NULL
,EMPNAME    VARCHAR(40)
,EMPSALARY    FLOAT
,EMPGENDER    CHAR(1)
)

Depois inserimos os registros na tabela criada

INSERT INTO EMPLOYER (EMPNAME,EMPSALARY,EMPGENDER) VALUES (‘CARLOS’,2700,’M’)
INSERT INTO EMPLOYER (EMPNAME,EMPSALARY,EMPGENDER) VALUES (‘JOSE’,1200,’M’)
INSERT INTO EMPLOYER (EMPNAME,EMPSALARY,EMPGENDER) VALUES (‘MOHAMED’,10000,’M’)
INSERT INTO EMPLOYER (EMPNAME,EMPSALARY,EMPGENDER) VALUES (‘CRIS’,7200,’F’)
INSERT INTO EMPLOYER (EMPNAME,EMPSALARY,EMPGENDER) VALUES (‘MARA’,4000,’F’)
INSERT INTO EMPLOYER (EMPNAME,EMPSALARY,EMPGENDER) VALUES (‘CLARA’,1500,’F’)

Se quiser verificar como ficou a tabela

SELECT * FROM EMPLOYER

Agora iremos criar a proc que aumenta o salario verificando o sexo.

CREATE PROC [DBO].AUMENTA_SALARIO ( @PERC_M FLOAT
,@PERC_F FLOAT )
AS

/*
PROC QUE AUMENTA SALARIO VERIFICANDO O SEXO
SL4V3R / 2007-12-05
*/

DECLARE     @COD        INT
,@GENDER    CHAR(1)

DECLARE     EMP CURSOR FOR
SELECT     EMPCOD
,EMPGENDER
FROM     EMPLOYER
OPEN     EMP
FETCH     EMP
INTO     @COD
,@GENDER
WHILE (@@FETCH_STATUS = 0)
BEGIN

— ATUALIZA SALARIO
IF @GENDER = ‘M’
BEGIN
UPDATE    EMPLOYER
SET    EMPSALARY    = EMPSALARY + (EMPSALARY * @PERC_M / 100)
WHERE    EMPCOD        = @COD
END
ELSE
BEGIN
UPDATE    EMPLOYER
SET    EMPSALARY    = EMPSALARY + (EMPSALARY * @PERC_F / 100)
WHERE    EMPCOD        = @COD
END

— PROXIMO_REGISTRO
FETCH     EMP
INTO     @COD
,@GENDER

END

CLOSE EMP
DEALLOCATE EMP

Agora iremos  executar a proc aumentando o salario 10% homens e 5% mulheres.

EXEC AUMENTA_SALARIO 10,5

Agora eh soh verificar como que ficou o salario.

SELECT * FROM EMPLOYER

Pronto!

Vlw… qualquer duvida, eh soh falar.