Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cómo ejecuto un script sql desde otro?

758 views
Skip to first unread message

William Alfonso Patiño Plata

unread,
Jan 13, 2003, 3:24:02 PM1/13/03
to
Hola a todos:

Alguien puede decirme como llamo o ejecuto un script sql desde otro.

Por ejemplo: tengo un script para renombrar tablas: renom.sql que por dentro
recorre el sysobjects y me crea otro script llamado renom1.sql con los
comandos rename necesarios. Luego debo ejecutar renom1.sql.

Hay manera de llamarlo desde dentro de renom.sql?

Gracias y saludos desde Buacarmanga - Colombia.


Miguel Egea

unread,
Jan 13, 2003, 5:03:00 PM1/13/03
to

con xp_cmdshell y pasando los parámetros a osql podría hacerse. Revisa la
sintaxis en los books on line.

Saludos
Miguel Egea
"William Alfonso Patiño Plata" <calle...@hotmail.com> escribió en el
mensaje news:uemDXG0uCHA.2668@TK2MSFTNGP12...

William Alfonso Patiño Plata

unread,
Jan 13, 2003, 6:10:12 PM1/13/03
to

Que pena contigo, ya miré con detenimiento el osql y esa es mi solución.

Gracias por tus consejos.


William Alfonso Patiño Plata

unread,
Jan 13, 2003, 6:00:17 PM1/13/03
to

Gracias Miguel, ya lo miré y así se puede hacer ejecutando el isql.exe con
parámetros.
Existe otra forma?, por ejemplo, en SQL*Plus de Oracle tu incluyes una
línea: start archivo.sql y listo.

Perdona otra pregunta: sabes como crear un archivo sql desde el código de
otro?
como cuando en Oracle tu escribes: spool salida.sql y mas tarde: spool off y
el archivo queda creado.

Mira lo que necesito es para renombrar unas tablas luego de subirlas a la
BD, anteponiendo el prefijo TXM_.
Yo tengo este código en un archivo renom.sql

select 'sp_rename ' + name + ', TXM_' + name + '
' + 'go'
from sysobjects
where type = 'U'
and substring(name,1,2) in ('DF','NM','TM')
order by 1

eso me genera una serie de comandos sp_rename con el nombre de cada tabla,
luego tomo ese
resultado y lo coloco en la ventana query para ejecutarlo.

lo que quiero es armar el archivo y que luego el mismo ejecute el resultado
para tener todo el efecto desde un solo archivo y eliminar la intervención
manual.

Muchas gracias de antemano por tu tiempo.
Saludos desde Bucaramanga - Colombia.


William Alfonso Patiño Plata

unread,
Jan 13, 2003, 6:30:02 PM1/13/03
to
Gracias de nuevo. La verdad ya he programado con cursores y me parece muy
buena idea. Ya está implementada y corriendo.

Saludos desde Bucaramanga - Colombia, cualquier cosa a tus ordenes.

"Miguel Egea" <migue...@telefonica.net> escribió en el mensaje
news:eG6vEq1uCHA.2868@TK2MSFTNGP12...
> Poco a poco verás las ventajas del query analizer frente al Sql-plus.
Puedes
> simplemente copiar y pegar el resultado de tu consulta o pinchar en la
parte
> de datos con el botón derecho, guardar como.
> También puedes usar este script.
> use pruebas
> go
> declare pruebas cursor for
> select 'exec sp_rename ' + name + ', TXM_' + name


> from sysobjects
> where type = 'U'

> and substring(name,1,2) in ('U','NM','TM')
> order by 1
> Declare @var varchar(100)
> open pruebas
> fetch pruebas into @var
> while @@fetch_Status=0
> begin
> exec( @var)
> fetch pruebas into @var
> end
> deallocate pruebas
>
> que te hará lo que quieres directamente.
>
> Espero que te sirva.
>
> --
> --
> Un Saludo
> Miguel Egea
> http://www.portalsql.com
> Microsoft SQL-SERVER MVP.
> P.D.: Hasta yo uso cursores alguna vez ;-) jeje (aunque ni siquiera aquí
> son imprescindibles)


>
> "William Alfonso Patiño Plata" <calle...@hotmail.com> escribió en el

> mensaje news:ex5V2d1uCHA.2372@TK2MSFTNGP09...

Miguel Egea

unread,
Jan 13, 2003, 6:21:46 PM1/13/03
to
Poco a poco verás las ventajas del query analizer frente al Sql-plus. Puedes
simplemente copiar y pegar el resultado de tu consulta o pinchar en la parte
de datos con el botón derecho, guardar como.
También puedes usar este script.
use pruebas
go
declare pruebas cursor for
select 'exec sp_rename ' + name + ', TXM_' + name

from sysobjects
where type = 'U'
and substring(name,1,2) in ('U','NM','TM')
order by 1

Declare @var varchar(100)
open pruebas
fetch pruebas into @var
while @@fetch_Status=0
begin
exec( @var)
fetch pruebas into @var
end
deallocate pruebas

que te hará lo que quieres directamente.

Espero que te sirva.

--
--
Un Saludo
Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
P.D.: Hasta yo uso cursores alguna vez ;-) jeje (aunque ni siquiera aquí
son imprescindibles)

"William Alfonso Patiño Plata" <calle...@hotmail.com> escribió en el
mensaje news:ex5V2d1uCHA.2372@TK2MSFTNGP09...

Miguel Egea

unread,
Jan 13, 2003, 6:22:10 PM1/13/03
to
De nada !! a mandar!!!

--
--
Un Saludo
Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.

"William Alfonso Patiño Plata" <calle...@hotmail.com> escribió en el

mensaje news:ODEyMj1uCHA.2596@TK2MSFTNGP12...

0 new messages