Parametrizar nombre de talbas en SQL

Hola expertos. Mi cuestión es (creo) bastante simple. Tengo un problema con la base de datos, y es que los nombres de las tablas van a cambiar, con toda seguridad, cuando la aplicación quede instalada definitivamente. Por lo que debería parametrizar el nombre de las tablas, así el día que cambien los nombres solamente cambiaré el nombre de la tabla en un único sitio, y no en cada Insert, select, update y delete que haya puesto.
Sería como poner
INSERT INTO :MiVariable ...
Donde Mi variable sería un String con el nombre de la tabla (lo leería de un .ini o algo por el estilo)
¿Es esto posible? ¿Hay alguna otra forma de afrontar el problema?
Un saludo y gracias por adelantado

1 respuesta

Respuesta
1
Si utilizas dw dinámico... todo es posible...
Es muy fácil...
Lo primero que hice fue crearme una tabla con 2 columnas(tablaid, tablanombre)... en ella almaceno los nombres de las tablas que tiene mi bd... por ejemplo, si tuviera estos datos
tablaid | tablanombre
     1 Cliente
     2 Producto
     3 Pedido
Si por algún motivo cambiara Cliente por Empresa el id se mantendría... ese es el truco.. y eso lo hice n mi dw
... este es mi código
====================================================
string ls_select , ls_where , ls_query , ls_dw_dinamic ,  ls_err
string ls_tabla
select tablanombre into :ls_tabla from tablas where tablaid = 1;//es lo q t mencionaba en el ejemplo
ls_select = "select cli_id as ' ID ',cli_razonsocial as 'Razon Social',cli_ruc as 'R U C',cli_direccion as 'Dirección',cli_telefono as 'Teléfono' from "+ls_tabla
ls_query = ls_select
ls_dw_dinamic = SQLCA.SyntaxFromSQL ( ls_query,"Style(Type=Grid ) "+"Text(Border=6 )"+&
"Column(Border=5)"+"Column(Background.Mode=0 )"+&
"Column(Background.Color=16777215 )", ls_err )
dw_1.Create ( ls_dw_dinamic, ls_err )
IF ls_err <> '' THEN
 MessageBox ( "error - Syntax", ls_err )
ELSE
 dw_1.SetTransObject ( SQLCA )
 dw_1.Retrieve()
 dw_1.Object.DataWindow.Header.Color = 12632256
END IF
==================================================
Gracias por tu respuesta, abusando un poco, ¿podrías aclararme una cosilla?
¿Esto también valdría para las instrucciones INSERT, UPDATE, SELECT...?
Si te refieres al sql embebido... lamento decirt que no... esto solo es para dw dinámicos, cuya sintaxis va en estring

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas