Atascado con una función en SQL SERVER

Iniciado por IISiroII, 18 Febrero 2019, 21:15 PM

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

IISiroII

Código (sql) [Seleccionar]

CREATE FUNCTION dbo.captura6(@cuenta nchar(100))
RETURNS INT
AS
BEGIN
DECLARE @numero int;
SELECT @numero = Count(*) FROM @cuenta
RETURN @numero
END
GO


El objetivo es usar esta función es que devuelva el numero de filas de la tabla pasada por parámetro.
El problema es que el SQL Server Management Studio me dice que @cuenta no está definida, y cuando añado la linea DEFINE @cuenta nchar(100) me dice que ya estaba definida...

No doy encontrado el problema y mucho menos como solucionarlo xD.

IISiroII

Vale, finalmente he conseguido una solución un poco rocambolesca xD.
Código (sql
) [Seleccionar]
CREATE FUNCTION dbo.captura6()
RETURNS INT
AS
BEGIN
DECLARE @resultado INT;
SELECT @resultado = COUNT(*) FROM dbo.Tabla1
RETURN @resultado
END
GO

Básicamente eliminé el parámetro de entrada y coloqué manualmente el nombre de la tabla en el cuerpo de la función xD.
Luego para comprobarlo hice lo siguiente:
Código (sql) [Seleccionar]
SELECT dbo.captura6();
Y listo xD.

Shell Root

Código (sql) [Seleccionar]
DECLARE @sqlBody VARCHAR(500),@TableCount INT, @SQL NVARCHAR(1000)

SELECT @sqlBody = 'from TBLREFERENCIA'
SELECT @SQL = N'SELECT @TableCount = COUNT(*) ' + @sqlBody

EXEC sp_executesql @SQL, N'@TableCount INT OUTPUT', @TableCount OUTPUT

SELECT @TableCount

:https://stackoverflow.com/questions/6193126/how-to-get-row-count-from-exec-in-a-tsql-sproc
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.