Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

crear tabla con nombre de variable

Estas en el tema de crear tabla con nombre de variable en el foro de Bases de Datos General en Foros del Web. Este es el segundo intento de esta duda que tengo hace semanas. Necesito crear una tabla con el nombre de una variable. se ve facil, ...
  #1 (permalink)  
Antiguo 11/05/2006, 09:05
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo crear tabla con nombre de variable

Este es el segundo intento de esta duda que tengo hace semanas.
Necesito crear una tabla con el nombre de una variable. se ve facil, pero no consigo dar con la respuesta. mira este es el codigo:

Código HTML:
CREATE OR REPLACE PROCEDURE mostrar (v_dia char) is
nombre_tabla varchar2(20);
BEGIN
 nombre_tabla:= trim('v_dia');
execute immediate 'CREATE TABLE  || nombre_tabla || (FOLIO NUMBER, MONTO NUMBER)';
END mostrar;
/
Si le escibo un numero me dice:
ORA-00903: nombre de tabla no válido
ORA-06512: en "MGONZALEZ.MOSTRAR", línea 5
ORA-06512: en línea 7

si le pongo letras:
ORA-06550: línea 5, columna 23:
PLS-00201: el identificador 'LETRAS' se debe declarar
ORA-06550: línea 5, columna 3:
PL/SQL: Statement ignored

Quiza no sea esta la mejor forma de hacerlo. Pero necesito dar solucion a este problema
Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)
  #2 (permalink)  
Antiguo 12/05/2006, 10:55
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
No intentes crear tablas que inicien con numeros... intenta con lo siguiente y luego me cuentas


Código:
CREATE OR REPLACE PROCEDURE mostrar (v_dia varchar2) is
nombre_tabla varchar2(20) default null;
cadena1 varchar2(150) default '';

BEGIN
  nombre_tabla := v_dia;
  cadena1 := 'CREATE TABLE  ' || nombre_tabla ||'  (FOLIO NUMBER, MONTO NUMBER)';
execute immediate cadena1;
END;
Algunos cambios que podras ver.... v_dia es varchar, incorporar a una variable (cadena1) toda la sintaxis ya que "execute immediate" tiene un cierto bug en la conversion y concatenacion de variables
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:39.