Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
Problema con Update y StoredProc

Buenas!

Estoy intentando hacer un Update con un StoredProc de Oracle y no se muy bien como funciona. Hago algo asi:

OraStoredProc1.Close;
OraStoredProc1.SQLUpdate.Clear;
OraStoredProc1.SQLUpdate.Add('UPDATE accion SET accion.estado= 1 where accion.estado=8');
OraStoredProc1.Execute;
OraStoredProc1.CommitUpdates;

pero me pide el nombre del procedimiento almacenado; es una actualización puntual y no la tengo almacenada en la BBDD

¿No es posible asignarle el nombre en tiempo de ejecucion?

Gracias de antemano.
Un saludo
Responder Con Cita
  #2  
Antiguo 10-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Creo que estas mezclando conceptos.

Si "accion" es una tabla, entonces no hace falta un Store Procedure. el SQL lo pones en un Query, lo ejecutas con ExecQuery y listo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 14-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
Gracias por tu respuesta Lepe,
me funcionó pero ahora tengo otro problemilla con un UPDATE que quiero hacer. En realidad no se si la forma de la consulta es la correcta.

Quiero hacer un UPDATE de unos campos de forma aleatoria de esta manera:

Código SQL [-]UPDATE [SELECT top 100 LLAMADAS.estado, LLAMADAS.agente FROM LLAMADAS, CLIENTES WHERE (estado=8) AND (LLAMADAS.idcliente = CLIENTES.id) order By Rnd(LLAMADAS.idcliente)] SET LLAMADAS.estado=0, LLAMADAS.AGENTE = Null WHERE (LLAMADAS.estado=8)


El error me dice 'Invalid Table Name' como si no me cogiera bien el Select dentro del Update.

¿Sabeis que puede pasar?

Gracias!!!
Un saludo
Responder Con Cita
  #4  
Antiguo 14-05-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
No será...

Código SQL [-]
UPDATE [SELECT top 100 LLAMADAS.estado, LLAMADAS.agente FROM LLAMADAS, CLIENTES WHERE (estado=8) AND (LLAMADAS.idcliente = CLIENTES.id) order By Rnd(LLAMADAS.idcliente)] SET LLAMADAS.estado=0, LLAMADAS.AGENTE = Null WHERE (LLAMADAS.estado=8)

Porqué los corchetes?
No es con paréntesis... a lo mejor ese es el problema.

Código SQL [-]
UPDATE (SELECT top 100 LLAMADAS.estado, LLAMADAS.agente FROM LLAMADAS, CLIENTES WHERE (estado=8) AND (LLAMADAS.idcliente = CLIENTES.id) order By Rnd(LLAMADAS.idcliente)) SET (0, Null) WHERE (LLAMADAS.estado=8)

No he probado la sentencia SQL pero ha decir verdad nunca he visto una que admita corchetes.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 15-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
Hola y gracias por tu respuesta Delphius.

Parece ser que el problema era con los corchetes porque ya no me da el error de 'Invalid table name' pero ahora me da un error diferente: 'FROM keyword not found where expected'...

¿sabeis a que es debido???

un saludo y gracias!!!
Responder Con Cita
  #6  
Antiguo 15-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
Hola,

me contesto yo mismo... en Oracle no se permite la sentencia TOP por eso me daba el primer error de 'Invalid Table Name' y el segundo de 'FROM...'.
hay una función que hace hace lo mismo que es:

ROWNUM <= x

y se pone en el where.

Es decir, para hacer algo asi en Oracle

Código SQL [-]
size="2">SELECT TOP 10 product, descr, email 
FROM products 


lo haremos de esta manera:

Código SQL [-]
size="2">SELECT product, descr, email
FROM products 
WHERE ROWNUM <= 10


Gracias por la ayuda!!
Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Funcionamiento del StoredProc carlosegs11 SQL 4 08-05-2007 19:39:16
Problema con update pache Firebird e Interbase 4 22-11-2006 21:08:06
StoredProc Genner MS SQL Server 2 10-02-2006 18:03:28
Problema con un update en un SP RONPABLO Firebird e Interbase 3 09-03-2005 19:58:43
Parametro Result del StoredProc MarcelRuz Conexión con bases de datos 2 11-06-2004 21:24:15


La franja horaria es GMT +2. Ahora son las 05:38:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi