pq es incorrecto

joan
09 de Mayo del 2008
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 [email protected]_CAMPO
SET @NCODIGO [email protected]
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