Rand() dentro de una Funcion

10/11/2004 - 16:14 por Elcritico | Informe spam
Quiero crear una funcion para que al pasarle una cadena, eta funcion me
transforme esos datos en un cursor,
Me funciono todo bien hasta que quise pasarla a funcion.

create function matrix (@cadena nvarchar(255))
returns nvarchar(100)
begin
declare @nombre as char(5)
declare @busca as varchar(2)
select @cadena = '301,302,303,'
select @nombre = 'au'+ dbo.alltrim((str(round(15*10000,2),0)))
select @busca = CHARINDEX(',',@cadena )
exec('CREATE TABLE '+ @nombre + '( campo1 char(5))')
WHILE CHARINDEX(',',@cadena) > 0
begin
print('insert into '+ @nombre +' select
left('''+@cadena+''','+@busca+'-1)')
exec('insert into '+ @nombre +' select
left('''+@cadena+''','+@busca+'-1)')
select @cadena = SUBSTRING(@cadena, CHARINDEX(',',@cadena )+1,99)
end
exec('select * from ' + @nombre )
exec('drop table ' + @nombre )
end

el tema es que me sale el mensaje
Uso no válido de 'rand' en una función.
¿porque no le gusta el Rand() dentro de una funcion?
 

Leer las respuestas

#1 Elcritico
10/11/2004 - 16:29 | Informe spam
No se permiten las funciones no deterministas integradas en el cuerpo de la
funciones definidas por el usuario. Son las siguientes:

@@CONNECTIONS --@@TOTAL_ERRORS
@@CPU_BUSY -@@TOTAL_READ
@@IDLE --@@TOTAL_WRITE
@@IO_BUSY GETDATE
@@MAX_CONNECTIONS -GETUTCDATE
@@PACK_RECEIVED NEWID
@@PACK_SENT --RAND (aqui el culpable)
@@PACKET_ERRORS --TEXTPTR
@@TIMETICKS

=O(
debere reemplazarlo por DATEPART(ms, GETDATE()) + (DATEPART(ss, GETDATE())
* 1000 ) =O(
"Elcritico" escribió:

Quiero crear una funcion para que al pasarle una cadena, eta funcion me
transforme esos datos en un cursor,
Me funciono todo bien hasta que quise pasarla a funcion.

create function matrix (@cadena nvarchar(255))
returns nvarchar(100)
begin
declare @nombre as char(5)
declare @busca as varchar(2)
select @cadena = '301,302,303,'
select @nombre = 'au'+ dbo.alltrim((str(round(15*10000,2),0)))
select @busca = CHARINDEX(',',@cadena )
exec('CREATE TABLE '+ @nombre + '( campo1 char(5))')
WHILE CHARINDEX(',',@cadena) > 0
begin
print('insert into '+ @nombre +' select
left('''+@cadena+''','+@busca+'-1)')
exec('insert into '+ @nombre +' select
left('''+@cadena+''','+@busca+'-1)')
select @cadena = SUBSTRING(@cadena, CHARINDEX(',',@cadena )+1,99)
end
exec('select * from ' + @nombre )
exec('drop table ' + @nombre )
end

el tema es que me sale el mensaje
Uso no válido de 'rand' en una función.
¿porque no le gusta el Rand() dentro de una funcion?

Preguntas similares