Inicio > Power Builder > william4425 > Parametrizar nombre de talbas en SQL

Parametrizar nombre de talbas en SQL

Experto:
Usuario: Anónimo Fecha: 05/11/2009
Valoración: (4,00 sobre 5) Categoría: Power Builder
30/10/2009
Usuario
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
30/10/2009
tsyl, experto respondiendo en Power Builder
Experto
si utilizas dw dinamico...todo es posible....
es muy facil.....
lo primero q hice fue crearme una tabla con 2 columnas(tablaid,tablanombre)...en ella almaceno los nombres de las tablas q tiene mi bd...x ejemplo, si tuviera estos datos
tablaid | tablanombre
     1          Cliente
     2         Poducto
     3           Pedido
si x algun motivo cambiara Cliente x Empresa el id se mantendria....ese es el truco..y eso lo hice n mi dw
...este es mi codigo
====================================================
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
==================================================
03/11/2009
Usuario
Gracias por tu respuesta, abusando un poco, ¿podrías aclararme una cosilla?
¿Esto también valdría para las instrucciones INSERT, UPDATE, SELECT...?
04/11/2009
tsyl, experto respondiendo en Power Builder
Experto
si te refieres al sql embebido....lamento decirt q no....esto solo es para dw dinamicos, cuya sintaxis va en estring
05/11/2009
Usuario
Una lástima. gracias por la ayuda
Enlaces patrocinados