porque es incorrecto esto??????
Publicado por joan (1 intervención) el 09/05/2008 14:07:03
hola a todos , necesito de vuestra ayuda, quiero crear una funcion que comprueba si existe un valor en un campo de una tabla , todos: valor, campo y tabla son variables, he hecho esto y no funciona.
CREATE FUNCTION existe (@NOMBRE_CAMPO VARCHAR(50), @CODIGO VARCHAR(50), @TABLA VARCHAR (60))
RETURNS BIT
AS
BEGIN
DECLARE @EXISTE BIT
DECLARE @NNOMBRE_CAMPO VARCHAR(50)
DECLARE @NCODIGO VARCHAR(50)
DECLARE @NTABLA VARCHAR(60)
DECLARE @STRSQL VARCHAR(150)
SET @NTABLA = @TABLA
SET @NNOMBRE_CAMPO =@NOMBRE_CAMPO
SET @NCODIGO =@CODIGO
SET @STRSQL = 'SELECT ' + @NNOMBRE_CAMPO + ' FROM ' + @NTABLA + ' WHERE ' + @NNOMBRE_CAMPO + ' = ' + CHAR(39)+ @NCODIGO+ CHAR(39)
IF EXISTS( SELECT @NNOMBRE_CAMPO FROM NTABLA WHERE @NNOMBRE_CAMPO = CHAR(39)+ @NCODIGO+ CHAR(39) )
SET @EXISTE= 1
ELSE
SET @EXISTE= 0
RETURN @EXISTE
END
Al validarlo me da el error
Debe declarar la variable '@NTABLA'.
Sintaxis incorrecta cerca de la palabra clave 'ELSE'.
La variable está declarada, cual es el problema
CREATE FUNCTION existe (@NOMBRE_CAMPO VARCHAR(50), @CODIGO VARCHAR(50), @TABLA VARCHAR (60))
RETURNS BIT
AS
BEGIN
DECLARE @EXISTE BIT
DECLARE @NNOMBRE_CAMPO VARCHAR(50)
DECLARE @NCODIGO VARCHAR(50)
DECLARE @NTABLA VARCHAR(60)
DECLARE @STRSQL VARCHAR(150)
SET @NTABLA = @TABLA
SET @NNOMBRE_CAMPO =@NOMBRE_CAMPO
SET @NCODIGO =@CODIGO
SET @STRSQL = 'SELECT ' + @NNOMBRE_CAMPO + ' FROM ' + @NTABLA + ' WHERE ' + @NNOMBRE_CAMPO + ' = ' + CHAR(39)+ @NCODIGO+ CHAR(39)
IF EXISTS( SELECT @NNOMBRE_CAMPO FROM NTABLA WHERE @NNOMBRE_CAMPO = CHAR(39)+ @NCODIGO+ CHAR(39) )
SET @EXISTE= 1
ELSE
SET @EXISTE= 0
RETURN @EXISTE
END
Al validarlo me da el error
Debe declarar la variable '@NTABLA'.
Sintaxis incorrecta cerca de la palabra clave 'ELSE'.
La variable está declarada, cual es el problema
Valora esta pregunta


0