¿ Cómo pasar a un procedimiento almacenado como parametro una base de datos?

17/08/2003 - 01:20 por Digti | Informe spam
El lenguaje Transact-SQL tiene el comando
USE { database } que interpreto que se pueda utilizar en
procedimientos almacenados pero cuando inserto dicho
comando me da un error diciendo que no se permite la
instruccion en un procedimiento o desencadenador por otro
lado este no permite utilizar una variable como
parametro, como alternativa he utilizado el comando
EXEC ('USE {database}') en procedimientos pero no he
obtenido los resultados deseados.

Conclusión, mi interes es conocer como puedo implementar
una base de datos con procedimientos que puedan recuperar
y/o procesar informacion de otras bases de datos de forma
parametizable, el problema se expresa en el siguiente
ejemplo:

CREATE PROCEDURE Prueba
@Base_Dato Varchar(255)
AS
EXEC ('use '+@Base_Dato)
SELECT ...
GO

En pruebas efectuadas la setencia Select busca la tabla
en la base de datos donde se encuentra el procedimiento
Prueba y no lo hace en la base @Base_Dato a pesar de
ejecutarse EXEC ('use '+@Base_Dato) correctamente
¿ Como resolver este problema ?

Agradecere cualquier ayuda en este sentido

Gracias
 

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
17/08/2003 - 05:19 | Informe spam
Para acceder a objetos de otra base de datos puedes mencionar los objetos
en forma calificada: servidor.base.owner.objeto

Ejemplos:

SELECT ... FROM miSqlServer.pubs.dbo.titles
SELECT ... FROM pubs..titles -- servidor corriente y owner dbo se asumen por
defecto

Saludos
Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Digti" wrote in message
news:02fa01c3644c$ea5077a0$
El lenguaje Transact-SQL tiene el comando
USE { database } que interpreto que se pueda utilizar en
procedimientos almacenados pero cuando inserto dicho
comando me da un error diciendo que no se permite la
instruccion en un procedimiento o desencadenador por otro
lado este no permite utilizar una variable como
parametro, como alternativa he utilizado el comando
EXEC ('USE {database}') en procedimientos pero no he
obtenido los resultados deseados.

Conclusión, mi interes es conocer como puedo implementar
una base de datos con procedimientos que puedan recuperar
y/o procesar informacion de otras bases de datos de forma
parametizable, el problema se expresa en el siguiente
ejemplo:

CREATE PROCEDURE Prueba
@Base_Dato Varchar(255)
AS
EXEC ('use '+@Base_Dato)
SELECT ...
GO

En pruebas efectuadas la setencia Select busca la tabla
en la base de datos donde se encuentra el procedimiento
Prueba y no lo hace en la base @Base_Dato a pesar de
ejecutarse EXEC ('use '+@Base_Dato) correctamente
¿ Como resolver este problema ?

Agradecere cualquier ayuda en este sentido

Gracias

Preguntas similares