Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Stored procedure con error en SQL Server

Estas en el tema de Stored procedure con error en SQL Server en el foro de SQL Server en Foros del Web. Hola, necesito ayuda para hacer funcionar este stored procedure en SQL server. El objetivo del mismo es poblar una tabla, cuyo nombre se pasa por ...
  #1 (permalink)  
Antiguo 27/07/2010, 15:51
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Stored procedure con error en SQL Server

Hola, necesito ayuda para hacer funcionar este stored procedure en SQL server. El objetivo del mismo es poblar una tabla, cuyo nombre se pasa por parámetro. La encontré en la web, pero aparentemente no es compatible con mi BD.

Muchas gracias por anticipado!



create or replace procedure fill_table (p_tname in varchar2, p_records in number, p_clone in boolean)
----------------------------------------------------------------------------------------------------------------------------------
-- Nombre: flll_table
-- Modificó: Orlando Olguín Olvera
-- Descripción: Llena la tabla p_tname en todos sus campos, con p_records registros de datos aleatorios. Si p_clone es
-- true, entonces se crea una copia de la tabla p_tname, y en ella se insertan los p_records registros.
----------------------------------------------------------------------------------------------------------------------------------
l_insert long;
l_rows number default 0;
begin

-- Ciclo para llenar la tabla clonada o no con la información aleatoria.
for x in (select data_type, data_length,
rpad ('9', nvl (data_precision, 10), '9') / power (10, nvl (data_scale, 1)) maxval
from user_tab_columns
where table_name = upper(p_tname)
order by column_id) loop

if ( x.data_type in ('NUMBER', 'FLOAT' )) then
l_insert := l_insert || 'dbms_random.value(1,' || x.maxval || '),';
elsif ( x.data_type = 'DATE' ) then
l_insert := l_insert || 'sysdate+dbms_random.value+dbms_random.value(1,100 0),';
else
l_insert := l_insert || 'dbms_random.string(''A'',' || x.data_length || '),';
end if;
end loop;

l_insert := rtrim(l_insert,',') || ' from all_objects where rownum <= :n';

loop
dbms_output.put_line (l_insert);
dbms_output.put_line (to_char (p_records) || '-' || to_char (l_rows));
execute immediate l_insert using p_records - l_rows;
l_rows := l_rows + sql%rowcount;
exit when ( l_rows >= p_records );
end loop;
end;
/
  #2 (permalink)  
Antiguo 27/07/2010, 16:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Stored procedure con error en SQL Server

Ese codigo parece de postgresql.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 03/08/2010, 08:49
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Stored procedure con error en SQL Server

Cita:
Iniciado por flaviovich Ver Mensaje
Ese codigo parece de postgresql.
Hola Flaviovich, la idea del script es cargar una tabla con datos aleatorios. Es una función muy útil cuando no se tienen los datos en un ambiente de pruebas.

Por favor si alguien me puede dar una mano para hacer funcionar este SP en SQL Server.

Muchas gracias!
  #4 (permalink)  
Antiguo 03/08/2010, 09:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Stored procedure con error en SQL Server

juncitoba

platicanos un poco sobre el store que nos platicas.

Dicen que son datos aleatorios, ¿de donde salen estos datos?, dices que lo vas a subir a un SQL SERVER, ¿que edicion-version tienes?
  #5 (permalink)  
Antiguo 03/08/2010, 09:21
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Stored procedure con error en SQL Server

El código original es PL/SQL de Oracle. No voy a hacer la traducción completa a T-SQL, pero te dejo algunos tips.

El cursor for loop de Oracle se traduce como:

Código:
declare x cursor for select * from information_schema.columns
dbms_random se puede traducir con variaciones de la función rand()

Código:
select rand()
El loop es algo clásico:

Código:
while (p_records <= l_rows)
begin
end
El execute immediate se traduce con:

Código:
sp_executesql
Y la vista all_objects es sys.sysobjects.

Edito:

Me faltó sql%rowcount es @@rowcount

Saludos

Última edición por matanga; 03/08/2010 a las 09:28 Razón: más info
  #6 (permalink)  
Antiguo 05/08/2010, 07:48
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Stored procedure con error en SQL Server

Cita:
Iniciado por iislas Ver Mensaje
juncitoba

platicanos un poco sobre el store que nos platicas.

Dicen que son datos aleatorios, ¿de donde salen estos datos?, dices que lo vas a subir a un SQL SERVER, ¿que edicion-version tienes?

Hola!, estoy trabajando sobre una base Oracle 10g en realidad. Esperaba que el código sea lo mismo, pero quizás me equivoco.

El stored procedure sirve para poblar tablas vacías con datos sin significado, sólo con el propósito de trabajar con tablas no vacías, a los efectos de las pruebas.

espero haberme explicado bien. He encontrado que hay soluciones parecidas, pero todas requieren conocer de antemano la estructura de la tabla. Dejo ejemplos...

http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/249/creating-random-sql-server-test-data.aspx

http://it.toolbox.com/blogs/db2luw/how-to-easily-populate-a-table-with-random-data-7888
  #7 (permalink)  
Antiguo 05/08/2010, 10:59
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Stored procedure con error en SQL Server

Oracle vs SQL Server, hay diferencias con el codigo T-SQL, ya que ambos, tienes su propio codigo y algunos procedimientos, asi como funciones que no son compatibles entre estos motores.

Para recibir una opinion mas cercana a lo que buscas, publica tu pregunta en el foro de Oracle.
  #8 (permalink)  
Antiguo 05/08/2010, 13:34
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Stored procedure con error en SQL Server

gracias! ahora lo hago...

Etiquetas: corregir, oracle, procedimiento, procedure, server, sql, stored, traducir, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:02.