![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
![]() Hola amigos todos.
Me gustaria saber si es posibre que se pueda pasar el nombre de una tabla por parametros, ya sea a un query o a un procedimiento en una base de datos en firebird 2.1. Por ejemplo: declare variable Nombre_Tabla varchar(30); declare variable Ano_Consulta Integer; if (:Ano_Consulta < 2008) then Nombre_Tabla = 'Datos_Viejos' else Nombre_Tabla = 'Datos_Nuevos' Select campo1, campo2, campo3 from :Nombre_Tabla Me gustaria saber si esto es posible hacerse. ![]() Saludos y gracias anticipadas. Enriquillo. |
#2
|
||||
|
||||
![]() Saludos.
Es posible, pero debes de utilizar la sentencia EXECUTE STATEMENT. Así que te recomiendo documentarte sobre la misma.
__________________
Gracias, Rolphy Reyes |
#3
|
|||
|
|||
Muchas Gracias Amigo
Voy a intentar documentarme al respecto.
Luego posteo mis resultados. |
#4
|
||||
|
||||
Extension de SQL : EXECUTE STATEMENT
Implementa la capacidad de tomar una cadena como una sentencia dinámica SQL válida y la ejecuta como si se hubiera enviado al motor. Se peude utilizar en triggers y procedimientos almacenados. Hay tres sintaxis: Syntaxis 1 ======== EXECUTE STATEMENT <string>; Ejecuta <string> como una operacion SQL que no devuelve datos. Se pueden ejecutar los siguientes comandos: * Insert, Delete y Update. * Ejecutar un procedimiento. * Cualquier DDL (excepto Create/Drop Database). Ejemplo:
Sintaxis 2 ========= EXECUTE STATEMENT <string> INTO :var1, ., :varn; Ejecuta <string> como una operación SQL que regresa una única fila. Solo pueden ejecutarse SELECT's simples con esta sintaxis. Ejemplo:
Sintaxis 3 ======== FOR EXECUTE STATEMENT <string> INTO :var1, ., :varn DO <compound-statement>; Ejecuta <string> como una operación que devuelve varias filas. Se puede usar cualquier tipo de SELECT. Ejemplo:
N O T A S ========= I. En todas las formas de este comando, la cadena DSQL no puede contener ningún parámetro. Todas las variables deben sustituirse en la parte estática del comando antes de llamar a EXECUTE STATEMENT. EXECUTE STATEMENT es potencialmente peligroso, porque: 1. En tiempo de compilación no se verifica que la sentencia SQL sea correcta. No se pueden verificar los valores devueltos (sintaxis 2 y 3) 2. No se pueden verificar dependencias para asegurarse que los objetos utilizados en la sentencia SQL no sean borrados de la base de datos o modificados de manera que la sentencio original ya no sea válida. Por ejemplo, un DROP TABLE en la tabla que se utiliza dentro del comando que se le pasa a EXECUTE PROCEDURE será aceptado como válido. 3. Por lo regular, las operaciones con EXECUTE STATEMENT son lentas debido a que la setencia debe ser preparada cada vez que se usa este comando. II. Si el procedimiento almacenado tiene privilegios especiales son algunos objetos, la cadena que contiene la sentencia dinámica que se le pasa a EXECUTE STATEMENT no los hereda. Los privilegios siguen siendo aplicables al usuario que utiliza el comando. Original de : Alex Peshkoff Traducción: mía.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ejecutar procedimientos por su nombre y con parametros | makina | OOP | 3 | 29-09-2016 18:06:55 |
Cambiar nombre tabla firebird | Milperrimo | Firebird e Interbase | 1 | 11-12-2008 18:05:25 |
Variable en el nombre de la Tabla | carlosegs11 | SQL | 1 | 16-06-2006 23:32:47 |
busqueda de un nombre en una tabla | cmena | Varios | 5 | 04-05-2004 10:04:11 |
Pasar nombre de tabla en SP | __cadetill | Firebird e Interbase | 4 | 19-09-2003 19:48:00 |
![]() |
|