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

alterar tabla desde un sp

Estas en el tema de alterar tabla desde un sp en el foro de Oracle en Foros del Web. Buenas comunidad: Simplementene eso deseo Crear y Borrar columnas de una tabla desde un Store Procedure la idea es algo asi Código: CREATE OR REPLACE ...
  #1 (permalink)  
Antiguo 07/12/2009, 10:09
Avatar de ah_puch  
Fecha de Ingreso: agosto-2005
Ubicación: Ecatepec, México
Mensajes: 180
Antigüedad: 15 años, 2 meses
Puntos: 3
Exclamación alterar tabla desde un sp

Buenas comunidad:

Simplementene eso deseo Crear y Borrar columnas de una tabla desde un Store Procedure

la idea es algo asi

Código:
CREATE OR REPLACE PROCEDURE SP_CREATE_TABLE(TBL_NAME IN NVARCHAR2,
COL_NAME IN NVARCHAR2, 
TYPE_ACTION NUMBER DEFAULT 1)

BEGIN 
ALTER TABLE  TABLE_NAME
ADD COLUMN COL_NAME NVARCHAR2
END;
DONDE 1 ES CREAR Y SI MANDO UN 0 ES BORRAR
PERO LA VERDAD NO SE ME OCURRE COMO ALGUNA IDEA?

DE ANTEMANO GRACIAS Y ESPERO PUEDAN AYUDARME
__________________
La programacion no es un trabajo, es un Arte
http://www.purodev.blogspot.com
  #2 (permalink)  
Antiguo 07/12/2009, 11:13
Avatar de ah_puch  
Fecha de Ingreso: agosto-2005
Ubicación: Ecatepec, México
Mensajes: 180
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: alterar tabla desde un sp

ya encontre como se hace... aqui les paso el tip por si a alguien mas le sucede... si exite una forma mas optima que la que presentento a continuacion me agradaria que me lo hicieran saber...

Código:
CREATE OR REPLACE 
PROCEDURE SP_ADD_COLUMNAS (TABLE_NAME IN VARCHAR2,
                                                      COL_NAME IN VARCHAR2,
                                                      COL_TYPE IN VARCHAR2,
                                                      IS_NULL IN NVARCHAR2 DEFAULT 'YES') IS 
BEGIN

/* MODIFICA LAS COLUMNAS DE UNA TABLA 
    SP_ADD_COLUMNAS (NOMBRE DE LA TABLA, 
                                      NOMBRE DE LA NUEVA COLUMNA, 
                                     TIPO DE DATO, 
                                     ACEPTA NULOS (YES/ NO))
    DONDE:
     SI NO SE CAPTURA DATO ALGUNO EN CAMPO IS_NULL POR DE DEFECTO SERA "YES" ES DECIR EL CAMPO 
     CREADO ACEPTARA DATOS NULOS DE LO CONTRARIO SI SE CAPTURA COMO "NO" ESE CAMPO NO ACEPTARA
     VALORES NULOS
*/
  IF is_null <> 'NO' THEN 
  /*ACLARACION!!!!!: ESTE IF ESTA MARCADO COMO DIFERENTE DE NO PARA EN DADO CASO DE UN MAL 
                     TECLEO CREE LA COLUMNA ACEPTADO NULOS
  */
     Execute Immediate('ALTER TABLE ' || TABLE_NAME || 
                       ' ADD (' || COL_NAME || ' ' || COL_TYPE || ' NULL )');
  ELSE 
     Execute Immediate('ALTER TABLE ' || TABLE_NAME || 
                        ' ADD (' || COL_NAME || ' ' || COL_TYPE || ' NOT NULL )');
  END IF;
END;
nuevamente de ante mano gracias!!
__________________
La programacion no es un trabajo, es un Arte
http://www.purodev.blogspot.com

Última edición por ah_puch; 07/12/2009 a las 12:17
  #3 (permalink)  
Antiguo 07/12/2009, 11:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 11 años, 8 meses
Puntos: 360
Respuesta: alterar tabla desde un sp

Debes concatenar la variable de entrada con la sentencia y hacer uso de execute immediate

sería algo así

Código sql:
Ver original
  1. EXECUTE immediate 'alter table ' || TABLE_NAME || 'add column ' || col_name || 'nvarchar2';


EDITO: Lo solucionaste antes.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 03:03.