InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
PL/SQL y Java
Secuencias
Transacciones autónomas
Funciones integradas de PL/SQL
Transacciones con PL/SQL
Tipo VARRAY

Afiliados
La Web del programador
MundoProgramacion


 

SQL Dinamico

Sentencias DML con SQL dinamico

    PL/SQL ofrece la posibilidad de ejecutar sentencias SQL  a partir de cadenas de caracteres. Para ello debemos emplear la instrucción EXECUTE IMMEDIATE.

    Podemos obtener información acerca de número de filas afectadas por la instrucción ejecutada por EXEXUTE IMMEDIATE utilizando SQL%ROWCOUNT.

    El siguiente ejemplo muestra la ejecución de un comando SQL dinamico.


DECLARE
  ret NUMBER;
  FUNCTION fn_execute RETURN NUMBER IS
    sql_str VARCHAR2(1000);
  BEGIN
    sql_str := 'UPDATE DATOS SET NOMBRE = ''NUEVO NOMBRE''
WHERE CODIGO = 1'
;   
    EXECUTE IMMEDIATE sql_str;  
    RETURN SQL%ROWCOUNT;
  END fn_execute ;
BEGIN
     ret := fn_execute();
     dbms_output.put_line(TO_CHAR(ret));
END;

    Podemos además parametrizar nuestras consultas a través de variables host. Una variable host es una variable que pertenece al programa que está ejecutando la sentencia SQL dinámica y que podemos asignar en el interior de la sentencia SQL con la palabra clave USING . Las variables host van precedidas de dos puntos ":".

    El siguiente ejemplo muestra el uso de variables host para parametrizar una sentencia SQL dinamica.


DECLARE
  ret NUMBER;
  FUNCTION fn_execute (nombre VARCHAR2, codigo NUMBER) RETURN NUMBER
IS
    sql_str VARCHAR2(1000);
  BEGIN
    sql_str := 'UPDATE DATOS SET NOMBRE = :new_nombre
WHERE CODIGO = :codigo'
;   
    EXECUTE IMMEDIATE sql_str USING nombre, codigo;  
    RETURN SQL%ROWCOUNT;
  END fn_execute ;
BEGIN
     ret := fn_execute('Devjoker',1);
     dbms_output.put_line(TO_CHAR(ret));
END;

Cursores con SQL dinámico

    Con SQL dinámico también podemos utilizar cursores.

    Para utilizar un cursor implicito solo debemos construir nuestra sentencia SELECT en una variable de tipo caracter y ejecutarla con EXECUTE IMMEDIATE utilizando la palabra clave INTO.


DECLARE
       str_sql VARCHAR2(255);
       l_cnt   VARCHAR2(20);
BEGIN
     str_sql := 'SELECT count(*) FROM PAISES';
     EXECUTE IMMEDIATE str_sql INTO l_cnt;
     dbms_output.put_line(l_cnt);
END;

    Trabajar con cursores explicitos es también muy fácil. Únicamente destacar el uso de REF CURSOR para declarar una variable para referirnos al cursor generado con SQL dinamico. 


DECLARE
 
TYPE
CUR_TYP IS REF CURSOR;
  c_cursor CUR_TYP;
  fila PAISES%ROWTYPE;
  v_query VARCHAR2(255);
BEGIN
  v_query := 'SELECT * FROM PAISES';
 
  OPEN c_cursor FOR v_query;
  LOOP
    FETCH c_cursor INTO fila;
    EXIT WHEN c_cursor%NOTFOUND;
    dbms_output.put_line(fila.DESCRIPCION);
  END LOOP;
  CLOSE c_cursor;
END;

    Las varibles host tambien se pueden utilizar en los cursores.


DECLARE
  TYPE cur_typ IS REF CURSOR;
  c_cursor CUR_TYP;
  fila PAISES%ROWTYPE;
  v_query VARCHAR2(255);
  codigo_pais VARCHAR2(3) := 'ESP';
BEGIN

  v_query := 'SELECT * FROM PAISES WHERE CO_PAIS = :cpais';
  OPEN c_cursor FOR v_query USING codigo_pais;
  LOOP
    FETCH c_cursor INTO fila;
    EXIT WHEN c_cursor%NOTFOUND;
    dbms_output.put_line(fila.DESCRIPCION);
  END LOOP;
  CLOSE c_cursor;
END;

 


Inicio | Tutorial PL/SQL Transacciones autónomasTutorial PL/SQLFunciones integradas de PL/SQL Versión para imprimir Foros de consulta

 
duda por pepe
Respuesta recibida el [25/07/2007 02:44:23]
Tengo entendido que execute immediate no sirve para instrucciones DDL, es eso correcto? es que soy novato. Podría entonces sustituir al paquete DBMS_SQL? son cosas totalmenete distintas? estoy hecho un lio.
Gracias por vuestro tiempo.

PD: Es una gran página.

 
Pues ahora mismo no lo sé, per... por Devjoker
Respuesta recibida el [01/09/2007 09:18:43]
Pues ahora mismo no lo sé, pero este tipo de dudas se arreglan fácil, haz una prueba, intenta crear una tabla por ejemplo y nos cuentas!

 
Si se puede por Manuel Antonio Castro Pérez
Respuesta recibida el [03/09/2007 11:57:54]
Si se puede hacer con sentencias DDL:


IF (v_existe != 0) THEN
v_strSql := 'DROP TABLE MIG_EST_RECEP';

EXECUTE IMMEDIATE v_strSql;
END IF;

 
Versiones que soportan el ejemplo por Ed
Respuesta recibida el [30/10/2007 07:44:01]
tengo Forms [32 Bit] Version 10.1.2.2.0 (Production)
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production

y me esta marcando error en OPEN c_cursor FOR v_query;

como si no lo soportara.

tengo esa duda soporta esta version el ejemplo?

 
Cursores Dinamicos por Diego
Respuesta recibida el [09/11/2007 12:47:06]
y si lo que quiero es ir añadiendo condiciones a la clausula where dependiendo de si los parametros que mando a mi procedimiento son nulos o no, ¿Como lo hago? 

 
Cursores Dinamicos por Diego
Respuesta recibida el [09/11/2007 12:55:22]
y si lo que quiero es ir añadiendo condiciones a la clausula where dependiendo de si los parametros que mando a mi procedimiento son nulos o no, ¿Como lo hago?.

Mi problema es a la hora de hacer el OPEN c_cursor FOR v_query USING ...,
dependiendo de los parametros del procedimiento (si son nulos o no) en el USING tengo que poner unos parametros u otros y no se como hacerlos he probado creando una cadena de caracteres pero no se como hacerla. Gracias.

 
query dinamico por Maber
Respuesta recibida el [27/12/2007 09:30:03]
creo que puedes hacerlo de esta manera
string_query:='SELECT * ' || 'FROM TABLA ';
string_query:=string_query || ' WHERE condicion'
La idea es ir armando las cadenas de texto por medio de los pipes

 
dblink dinamico por Jose E
Respuesta recibida el [23/01/2008 07:00:02]
Hola, necesito invocar un procedimiento mediante un dblink pasandole un parametro de entrada y 9 mas de salida he realizado varias pruebas pero no he conseguido hacerlo, es mas no se si se podra hacer, esto es lo que estoy haciendo:
v_select := 'PR_DATOS_CONTACTO_LMA( :1, :2 , :3 , :4 , :5 , :6 , :7 , :8 , :9 , :10 )';

EXECUTE IMMEDIATE v_select
USING p_clave_verificador_int,v_r_verificador.nom_verificador,v_primer_apellido,v_segundo_apellido,
v_num_tlf,v_num_tlf_2,v_fax,v_r_verificador.email,v_r_verificador.clase_productor,v_descripcionVerificador;

PR_DATOS_CONTACTO_LMA es un sinonimo del DBLINK q tengo q invocar, gracias

 
dblink dinamico por Jose E
Respuesta recibida el [23/01/2008 10:26:06]
Buenas de nuevo, al final he conseguido hacerlo andar, os dejo como lo he hecho por si os sirve a alguno, un saludo.:

v_select := 'BEGIN PR_DATOS_CONTACTO_LMA( :1 , :2 , :3 , :4 , :5 , :6 , :7 , :8 , :9 , :10); END;';

EXECUTE IMMEDIATE v_select
USING IN p_clave_verificador_int,
OUT v_r_verificador.nom_verificador,
OUT v_primer_apellido,
OUT v_segundo_apellido,
OUT v_num_tlf,
OUT v_num_tlf_2,
OUT v_fax,
OUT v_r_verificador.email,
OUT v_r_verificador.clase_productor,
OUT v_desClaseProductor;

 
Sql Dinamico... por Jesus
Respuesta recibida el [14/03/2008 02:13:29]
Pedro Buenas tardes... pero esto no me funciona... COmo le hagooo

begin
declare
v_paso1 varchar2(20);
v_paso2 varchar2(20);
v_paso3 varchar2(20);
v_total varchar2(100);
v_total_1 varchar2(100);
v_cade1 varchar2(20);
v_cade2 varchar2(20);
v_cade3 varchar2(20);
v_sql varchar2(200);
res_sql varchar2(200);
begin
v_paso1 := .08;
v_cade1 := '*(nvl(';
v_paso2 := null;
v_cade2 := ',';
v_paso3 := .95;
v_cade3 := '))';
--execute immediate (v_paso1||v_cade1||'v_paso2'||v_cade2||v_paso3||v_cade3);
begin
--v_sql := 'select v_paso1||v_cade1||'||'''v_paso2'||'''||v_cade2||v_paso3||v_cade3 into v_total from dual';
v_sql := 'select v_paso1*(nvl(v_paso2,v_paso3)) into v_total from dual';
dbms_output.put_line(' SQL ... '||v_sql );
execute immediate v_sql into res_sql;
dbms_output.put_line(' SQL ... '||res_sql );
end;
--
select v_total
into v_total_1
from dual;
dbms_output.put_line(' v$n_total_formula_1 .. '||v_total_1 );
END;
END;

 
EXECUTE IMMEDIATE CON UN PROCEDIMIENTO ALMACENADO CON PARAMETRO UN CURSOR por MIKE
Respuesta recibida el [15/04/2008 11:54:03]
COMO SE HACE:
EXECUTE IMMEDIATE CON UN PROCEDIMIENTO ALMACENADO PASANDO COMO PARAMETRO UN CURSOR.

 
Declarar Variables con execute immediate por Esteban
Respuesta recibida el [29/04/2008 10:26:22]
Se pueden declarar variables con el Execute Immediate ?

 
Listas Dinamicas por Elena
Respuesta recibida el [30/05/2008 07:00:48]
hola alguine puede ayudarme? necesito crear dos listas tipo y subtipo. la lista subtipo debe depender de lo seleccionado en la lista tipo, los hize da varias maneras usando cursor asi: 
declare

Lista Tipo:
i number(3):=0;
cursor cur1 is
select distinct r.descripcion_tipo, to_char(r.id_tipo_req_usr) as tipo_req_usr
from xxrh.xxrh_req_tipo_usr r;

begin
clear_list('tipo_req_list');
if :xxrh_requerimientos.tipo_req_usr is null then
for reg in cur1
loop
i:=i+1;
Add_List_Element('tipo_req_list', i ,reg.descripcion_tipo ,reg.tipo_req_usr);
end loop;
-- :xxrh_requerimientos.tipo_req_usr := null;
end if;
end;

Lista Subtipo:

declare
i number(3):=0;
lista varchar2(30);
cursor cur1 is
select s.descripcion_subtipo ,to_char(s.id_subtipo_req) subtipo_req
from xxrh.xxrh_req_subtipo s
where s.id_subtipo_req in ( select t.id_subtipo_req
from xxrh.xxrh_req_tipo_usr t
where t.id_tipo_req_usr = :xxrh_requerimientos.tipo_req_usr );
begin
clear_list('subtipo_list');
if :xxrh_requerimientos.subtipo_req is null then
for reg in cur1
loop
i:=i+1;
Add_List_Element('subtipo_list', i ,reg.descripcion_subtipo ,reg.subtipo_req );
end loop;
end if;
end;
ambas en el trigger when-list-changed
con esto me da error en ambas listas- error: No es posible resolver referencia al articulo tipo_req_list


 
sql dinamico desde cobol por Karen
Respuesta recibida el [05/06/2008 08:48:33]
Necesito invocar un sql dinamico desde cobol.

Lo que no se es como controlar la salida.

 
trigger para habilitar auditorias por alfonso delgadillo
Respuesta recibida el [13/06/2008 12:19:27]
hola que tal, espero que alguien me pueda ayudar.Lo que sucede es que tengo que crear un trigger que habilite las auditorias de insert, update,delete

 
trigger para habilitar auditorias por alfonso delgadillo
Respuesta recibida el [13/06/2008 12:27:38]
hola que tal, espero que alguien me pueda ayudar.Lo que sucede es que tengo que crear un trigger que habilite las auditorias de insert, update,delete, connect y all, el asunto es este:
He habilitado las auditorias en mi base de datos, entonces los comandos que ejecuto son los siguientes:
audit connect;
audit insert on alfonso.usuario by session;
audit delete on alfonso.usuario by session;
audit update on alfonso.usuario by session;
audit all;
El problema es que cuando se baja la base de datos, al volverla a subir se desabilitan las auditorias, entonces tengo como tarea habilitarlas por medio de un trigger, el trigger que he creado es este.
create or replace trigger auditorias
after startup on database
begin
execute immediate 'audit connect';
execute immediate 'audit insert on alfonso.usuario by session';
execute immediate 'audit delete on alfonso.usuario by session';
execute immediate 'audit update on alfonso.usuario by session';
execute immediate 'audit all';
end;
/
sin embargo al reiniciar la base de datos me marca el siguiente error en la ejecucion del trigger ORA-30511: invalid DDL operation in system triggers.
esto segun he leido es porque no acepta sentencias ddl, entonces si alguien me puede dar un consejo o decirme una forma correcta de hacerlo se los agradeceria mucho, hasta pronto.

 
Popular tabla temporal con execute immediate por Guillermo
Respuesta recibida el [30/06/2008 10:11:51]
Hola, estuve tratando de insertar datos en una global temporary (es preserve rows on commit) desde una query ejecutada con execute immediate para poder parametrizar una particion. Seria asi:

q_sql:='insert into tabla1 (select x from tabla2 partition('||par_particion||') where...)';

execute immediate q_sql;

y no me inserta datos, sin embargo la query funciona bien (he probado con una query plana insertando valores hardcodeados)... en q estoy fallando?
gracias

 
trigger ayuda por julio villanueva
Respuesta recibida el [08/08/2008 11:32:38]
q tal e creado un trigger sencillo para hacer unicamente un insert y el problema que tengo es q no se ejecuta el trigger dejo el trigger por si alguien puede ayudarme gracias

CREATE OR REPLACE TRIGGER tc_ingreso_cliente_tgr
AFTER INSERT
ON SWBAPPS.TC_INGRESO_CLIENTE
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE

BEGIN
INSERT INTO TC_INGRESO1_CLIENTE (
ingreso2id,
swdatecreated,
swcreatedby,
Nombres,
Apellidos,
Telefono_celular,
Ingresos_Mensuales,
Tiempo_de_Contrato,
Clasificacion

--commit;

);
values (TC_INGRESO1_CLIENTE_SQ.nextval,
sysdate,
:new.swcreatedby,
:new.Nombres,
:new.Apellidos,
:new.Telefono_celular,
:new.Ingresos_Mensuales,
:new.Tiempo_de_Contrato,
:new.Clasificacion
);
--commit;
EXCEPTION
WHEN OTHERS THEN

null;
END tc_ingreso_cliente_tgr;

 
Cargar un REF CURSOR por Aldar
Respuesta recibida el [19/08/2008 03:37:41]
Buenas!!
Muy buen sitio, me ha ayudado mucho.
Necesitaria pedirles si me pueden ayudar en lo siguiente:

Tengo una tabla PL/SQL que se llama TAB_P.
La misma es cargada mediante un procedure.
Lo que necesito hacer es pasar esta tabla PL/SQL QUE YA TENGO CARGADA a un REF CURSOR.
Intente hacerlo de muchas formas, pero me tira un error en la apertura del cursor. Las sentencias son:

Spec del Package:
TYPE REF_CUR IS REF CURSOR RETURN REC_REGISTRO;

Declaracion del Procedure:
R_CURSOR REF_CUR;
BEGIN
PA_GENERAL.PR_CARGA_TABLA(TAB_P);
OPEN R_CURSOR;
FOR I IN TAB_P.FIRST..TAB_P.LAST
LOOP
R_CURSOR := TAB_P(I);
END;

Esto me tira error en el OPEN, me dice: PLS-00382 Expression of wrong type

Esta bien lo que estoy haciendo? Se puede cargar un REF CURSOR de esta manera?

MUCHAS GRACIAS!!!!!!
END LOOP;

 
RECUPERAR LOS DATOS DE UNA FUNCION por francisco javier
Respuesta recibida el [02/10/2008 06:58:33]
Hola necesito ayuda con la recuperacion de datos despues de usar el execute immediate a la que en la cadena de texto tengo un bloque que realiza la llamada a una funcion

Gracias

 
como RECUPERAR LOS DATOS DE UNA FUNCION por Monica R.
Respuesta recibida el [08/10/2008 12:27:00]
yo he utilixado este codigo:var_retorno number;
sentencia:='call nombre_funcion(:1,:2) into var_retorno;';
execute immediate sentencia using
in parametro1,
in parametro2,
out var_retorno;

 
como RECUPERAR LOS DATOS DE UNA FUNCION por Monica R.
Respuesta recibida el [08/10/2008 12:34:41]
sorry, me falto los dos puntos en var_retorno puesto que tiene que se rde tipo bind, pongo el codigo correcto:
--var_retorno es el tipo de dato que retorne la funcion
--parametro1y parametro 2 solo si la funcion requiere parametros

var_retorno number;
sentencia:='call nombre_funcion(:1,:2) into :var_retorno;';
execute immediate sentencia using
in parametro1,
in parametro2,
out var_retorno;

 
Se puede dinamizar la clausula using?? por SERGIO
Respuesta recibida el [20/10/2008 09:58:54]
Hola a todos tengo un problemilla que no consigo arreglar, a ver si alguien puede ayudarme...
Quiere ejecutar un select a traves de execute immediate, el problema es que dependiendo que los parametro sean nulos o no mi clausula USING llevara unos campos u otros, se puede dinamizar lo paramteros de esta clausula igual que se puede dinamizar la clausula sentencia SQL???

El codigo que estoy intentando ejecutar es el siguiente:

PROCEDURE BUSCAR_USUARIO(
P_EVOLUCION OUT T_EVOLUCION,
P_DATOS OUT TIPOS.objRefCursor,
va2Usuario IN varchar2,
va2Nombre IN varchar2,
va2Apellido1 IN varchar2,
va2Apellido2 IN varchar2)
IS
numParam NUMBER;
numUsuarios number;
sentencia_sql varchar2(32767);
sentencia_count_sql varchar2(32767);
clausula_where varchar2(32767);
param_where varchar2(32767);
BEGIN

P_EVOLUCION := NEW T_EVOLUCION('OK', 'PRUEBAS.LISTAR_USUARIOS', null,null, null, '00000');

sentencia_sql := 'select * from pru_usuario where ';
sentencia_count_sql := 'select count(STRUSUARIO) from pru_usuario where ';
clausula_where := '';

numParam := 1;

if va2Usuario is not null then
clausula_where := clausula_where ||'upper(strusuario) = upper(:'||numParam||')';
numParam := numParam + 1;
param_where := param_where ||'va2Usuario';
end if;
if va2Nombre is not null then
if clausula_where = '' then
clausula_where := clausula_where ||'upper(strnombre) = upper(:'||numParam||')';
param_where := param_where ||'va2Nombre';
else
clausula_where := clausula_where ||' and upper(strnombre) = upper(:'||numParam||')';
param_where := param_where ||',va2Nombre';
end if;
numParam := numParam + 1;
end if;
if va2apellido1 is not null then
if clausula_where = '' then
clausula_where := clausula_where ||'upper(strapellido1) = upper(:'||numParam||')';
param_where := param_where ||'va2Apellido1';
else
clausula_where := clausula_where ||' and upper(strapellido1) = upper(:'||numParam||')';
param_where := param_where ||',va2Apellido1';
end if;
numParam := numParam + 1;
end if;
if va2Apellido2 is not null then
if clausula_where = '' then
clausula_where := clausula_where ||'upper(strapellido2) = upper(:'||numParam||')';
param_where := param_where ||'va2Apellido2';
else
clausula_where := clausula_where ||' and upper(strapellido2) = upper(:'||numParam||')';
param_where := param_where ||',va2Apellido2';
end if;
numParam := numParam + 1;
end if;

dbms_output.put_line('sentencia_sql '||sentencia_sql);
dbms_output.put_line('clausula_where '||clausula_where);
dbms_output.put_line('sentencia_count_sql '||sentencia_count_sql);

sentencia_sql := sentencia_sql || clausula_where || ';';
sentencia_count_sql := sentencia_count_sql || clausula_where || ';';

dbms_output.put_line('sentencia_sql '||sentencia_sql);
dbms_output.put_line('sentencia_count_sql '||sentencia_count_sql);
--execute immediate sentencia_sql into P_DATOS using param_where;
P_EVOLUCION.traza := '00001';
execute immediate sentencia_count_sql into numUsuarios using param_where;
P_EVOLUCION.traza := '00002';

if numUsuarios <> 0 then
P_EVOLUCION.traza := '00003';
open P_DATOS for sentencia_sql using param_where;
P_EVOLUCION.traza := '00004';
else
P_EVOLUCION.EVOLUCION :='NEK';
P_EVOLUCION.ERROR_CONTROLADO := 'ERROR.CURSOR_VACIO';
end if;

 
Nombre Tabla dinamico por Mario
Respuesta recibida el [06/01/2009 11:23:25]
Hola. Tengo una consulta dinámica donde uno de los parametros que cambia es el nombre de la tabla, abriendo el cursor con la cadena obtenida funciona bien, pero me piden utilizar bind variables por performance ya que estas las parsearia una sola vez. Cambie la forma de abrir el cursor utilizando la cadena con bind variables y USING, si pongo el nombre de la tabla fijo funciona bien pero si utilizo la bind variable me dice que no existe dicha tabla, probando con EXECUTE IMMEDIATE me pasa lo mismo. ¿Hay alguna forma de utilizar bind variables para el nombre de la tabla?. Paso un codigo de muestra.

declare
latabla VARCHAR2(11) := 'TABLAPRUEBA';
elparametro VARCHAR2(50) := '7352749346870949506' ;
sqlstring VARCHAR2(500);
begin
EXECUTE IMMEDIATE 'SELECT TO_CHAR(CLAVE) CLAVE_ID FROM :1 WHERE CLAVE = :2' USING latabla,elparametro;
end;

Desde ya muchas gracias.

 
Tabla dinamica - solución por Mario
Respuesta recibida el [06/01/2009 02:06:21]
Hola. Si a alguien le interesa la solución es la siguiente.

declare
latabla := 'TABLAPRUEBA';
elparametro := '7352749346870949506';
sql_string := 'SELECT * FROM ';
begin
EXECUTE IMMEDIATE sql_string || latabla || ' WHERE CLAVE = :1' USING elparametro;
end;

Saludos a todos.


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Transacciones autónomasTutorial PL/SQLFunciones integradas de PL/SQL Versión para imprimir

SQL Dinamico
Autor: Pedro Herrarte Sánchez
Visitas: 59459 Fecha de publicación: 24/07/2006
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 47 | Comentarios: 0 | Archivo: Articulos
Visitas: 109 | Comentarios: 0 | Archivo: Articulos
Visitas: 158 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 34 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 285 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Basic .NET|C#
Visitas: 844 | Comentarios: 2 | Archivo: Articulos
Categorias: C#|ASP.NET|HTML DHTML|XML|JavaScript|ASP.NET|ASP|PHP|Visual Studio
Visitas: 712 | Comentarios: 1 | Archivo: Articulos
Categorias: Administración|Tutorial SQL
Visitas: 452 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 1055 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 251 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS

Útimos temas recibidos en los foros ...
autogenerado de sugero social de salud por noemi ... [Visual Basic .NET] 15 29/06/2008
FORMULARIO ACCESS por jcifuentes ... [Access] 11 29/05/2007
Ysmael por Ysmael ... [SQL] 0 08/01/2009
Reflection por Maurito22 ... [C#] 2 06/01/2009
Programador por Robert ... [ORACLE] 0 07/01/2009
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 8 09/06/2008
quierocodigo de autogenerado del seguro por edwin garcia ramirez ... [Visual Basic .NET] 0 07/01/2009
Video gratis sobre AJAX con ASP.NET por alexxe ... [ASP.NET] 1 06/01/2009
calcular saldo acumulativo por cben ... [SQL] 5 30/12/2008
comparar 2 campos de 2 tablas usando el like por nani ... [SQL Server] 1 06/01/2009
Apagar ordenador remoto en C# por victoryiyo ... [C#] 1 07/01/2009
numero de AUTOGENERADO IPSS por carlos ... [Visual Basic .NET] 5 30/10/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
03/10/2006 Herencia y métodos virtuales    forma parte de...Tutorial C#
28/06/2006 Triggers en PL/SQL    forma parte de...Tutorial PL/SQL
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
10/06/2007 Operadores en Transact SQL    forma parte de...Tutorial de Transact SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
28/08/2006 Ubuntu en VmWare con VMware Tools
26/08/2007 Comandos Unix/Linux
19/08/2006 Virtualización. Maquinas Virtuales.
29/05/2007 Equivalencia de datos de SQL Server y .NET    forma parte de...Tutorial de Transact SQL
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]