Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: IISiroII en 18 Febrero 2019, 21:15 pm



Título: Atascado con una función en SQL SERVER
Publicado por: IISiroII en 18 Febrero 2019, 21:15 pm
Código
  1. CREATE FUNCTION dbo.captura6(@cuenta NCHAR(100))
  2. RETURNS INT
  3. AS
  4. BEGIN
  5. DECLARE @numero INT;
  6. SELECT @numero = COUNT(*) FROM @cuenta
  7. RETURN @numero
  8. END
  9. GO
  10.  

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.


Título: Re: Atascado con una función en SQL SERVER
Publicado por: IISiroII en 20 Febrero 2019, 13:27 pm
Vale, finalmente he conseguido una solución un poco rocambolesca xD.
Código
  1. CREATE FUNCTION dbo.captura6()
  2. RETURNS INT
  3. AS
  4. BEGIN
  5. DECLARE @resultado INT;
  6. SELECT @resultado = COUNT(*) FROM dbo.Tabla1
  7. RETURN @resultado
  8. END
  9. GO
  10.  
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
  1. SELECT dbo.captura6();
Y listo xD.


Título: Re: Atascado con una función en SQL SERVER
Publicado por: Shell Root en 20 Febrero 2019, 15:10 pm
Código
  1. DECLARE @sqlBody VARCHAR(500),@TableCount INT, @SQL NVARCHAR(1000)
  2.  
  3. SELECT @sqlBody = 'from TBLREFERENCIA'
  4. SELECT @SQL = N'SELECT @TableCount = COUNT(*) ' + @sqlBody
  5.  
  6. EXEC sp_executesql @SQL, N'@TableCount INT OUTPUT', @TableCount OUTPUT
  7.  
  8. SELECT @TableCount
:https://stackoverflow.com/questions/6193126/how-to-get-row-count-from-exec-in-a-tsql-sproc