una consulta sobre un error en SQL server 20005 - CREATE PROCEDURE....

Iniciado por XpandyX, 18 Julio 2011, 03:18 AM

0 Miembros y 1 Visitante están viendo este tema.

XpandyX

Buenas amigos... he estado practicando .... en SQL server 2005 junto con Netbenas 6.9 ,  y bueno estoy creando un procedimiento para que luego lo use en un API en Netbeans... y bueno el código se los muestro a continuación:
(Tambien la base que cree...)

Código (sql) [Seleccionar]

CREATE TABLE notas(
idAlumno int IDENTITY (1,1),
alumno Varchar (30) NOT NULL
CONSTRAINT unico UNIQUE,
nota1 int,
nota2 int,
nota3 int,
comentario varchar (60)
CONSTRAINT inicia DEFAULT ''
)


-- Insertar filas
insert notas (alumno,nota1,nota2,nota3)Values('Juan',11,11,11)
insert notas (alumno,nota1,nota2,nota3)Values('Ana',12,12,12)
insert notas (alumno,nota1,nota2,nota3)Values('Luis',13,13,13)


CREATE PROCEDURE Verifica_alumno

@pCodigo int,
@mensaje varchar(20)='aes' output,
@alumno varchar(30) output,
@nota1 varchar(2) output,
@nota2 varchar(2) output,
@nota3 varchar(2) output,
@comen varchar(60) output,

AS

declare @codigo int
begin
select @codigo=idAlumno from notas
WHERE @pCodigo=idAlumno
if(@codigo=@pCodigo)
begin
select  @mensaje='Alumno Encontrado',
@alumno=alumno,
@nota1=CONVERT(VARCHAR, nota1),
@nota2=CONVERT(VARCHAR, nota2),
@nota3=CONVERT(VARCHAR, nota3),
@comen=comentario
from notas holdlock
where idAlumno=@pCodigo
end
else
begin
select @mensaje='Alumno No Existe'
from notas holdlock
end
end


Y bueno el error que me muestra es:

Mens 156, Nivel 15, Estado 1, Procedimiento Verifica_alumno, Línea 11
Sintaxis incorrecta cerca de la palabra clave 'AS'.
Mens 1018, Nivel 15, Estado 1, Procedimiento Verifica_alumno, Línea 25
Sintaxis incorrecta cerca de 'holdlock'. Si se va a usar como parte de una sugerencia de tabla, es necesario escribir una palabra clave WITH y paréntesis. Vea los Libros en pantalla de SQL Server para conocer la sintaxis correcta.
Mens 1018, Nivel 15, Estado 1, Procedimiento Verifica_alumno, Línea 31
Sintaxis incorrecta cerca de 'holdlock'. Si se va a usar como parte de una sugerencia de tabla, es necesario escribir una palabra clave WITH y paréntesis. Vea los Libros en pantalla de SQL Server para conocer la sintaxis correcta.

y he buscado referente a esto .... y pues no he encontrado nada de como solucionarlo.... por favor si alguno de vosotros sabe como poder solucionar...

Muchas gracias.... :D

hacknival

CREATE TABLE notas(
   idAlumno INT IDENTITY (1,1),
   alumno VARCHAR (30) NOT NULL
      CONSTRAINT unico UNIQUE,
   nota1 INT,
   nota2 INT,
   nota3 INT,
   comentario VARCHAR (60)
      CONSTRAINT inicia DEFAULT ''
)


-- Insertar filas
INSERT notas (alumno,nota1,nota2,nota3)VALUES('Juan',11,11,11)
INSERT notas (alumno,nota1,nota2,nota3)VALUES('Ana',12,12,12)
INSERT notas (alumno,nota1,nota2,nota3)VALUES('Luis',13,13,13)


CREATE PROCEDURE Verifica_alumno

@pCodigo INT,
@mensaje VARCHAR(20)='aes' output,
@alumno VARCHAR(30) output,
@nota1 VARCHAR(2) output,
@nota2 VARCHAR(2) output,
@nota3 VARCHAR(2) output,
@comen VARCHAR(60) output             ***aqui no lleva coma***

AS

DECLARE @codigo INT
BEGIN
      SELECT @codigo=idAlumno FROM notas
      WHERE @pCodigo=idAlumno
      IF(@codigo=@pCodigo)
      BEGIN
            SELECT  @mensaje='Alumno Encontrado',
                  @alumno=alumno,
                  @nota1=CONVERT(VARCHAR, nota1),
                  @nota2=CONVERT(VARCHAR, nota2),
                  @nota3=CONVERT(VARCHAR, nota3),
             @comen=comentario
            FROM notas whit (holdlock) /********aqui******/
            WHERE idAlumno=@pCodigo
      END
      ELSE
      BEGIN
            SELECT @mensaje='Alumno No Existe'
            FROM notas whit (holdlock) /*******aqui******/
      END
END







ESPERO TE SIRVA.... COMENTA