FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
|
#2
|
||||
|
||||
Se supone que siempre comprobará la clave primaria, sea de un campo o esté compuesta por más de un campo.
Eso dice la lógica. |
#3
|
||||
|
||||
Gracias. Como no conocía la estructura estaba un poco perplejo. Otra cosa: esa instrucción MATCHING, ¿qué hace exactamente? Porque es evidente que lo último (returning) lo que hace es devolver un valor.
|
#4
|
||||
|
||||
MATCHING se refiere a encontrar el registro según los campos que le pasas.
En el ejemplo, busca primero si existe un registro cuyo campo Number es 3278823. Si lo encuentra hace un update sobre ese registro modificando los otros campos que le pasas Name y Location. De lo contrario hace un insert con los tres campos que le pasas. |
#5
|
||||
|
||||
Cita:
|
#6
|
||||
|
||||
Aquí el manual, ya que tiene algo más de juego... por ejemplo, puedes retornar valores OLD.campo o NEW.campo
En firebird 5 tiene más opciones todavía. () |
#7
|
||||
|
||||
Cita:
|
#8
|
||||
|
||||
Cita:
Tengo, por ejemplo, este procedimiento: Código:
CREATE OR ALTER PROCEDURE Act_Libro(Registro SMALLINT, Titulo VARCHAR(60), Autor VARCHAR(60), Genero VARCHAR(25), Situacion VARCHAR(6)) AS DECLARE VARIABLE NewRec SMALLINT; BEGIN UPDATE OR INSERT INTO Titulos (Tipo, Registro, Titulo, Autor, Genero, Situacion) VALUES (3, :Registro, :Titulo, :Autor, :Genero, :Situacion) RETURNING Registro INTO :NewRec; END; Código:
Query->Close(); Query->SQL->Text = "EXECUTE PROCEDURE Act_Libro (:Registro, :Titulo, :Autor, :Genero, :Situacion)"; Query->ParamByName("Titulo")->AsString = Titulo_libro->Text; Query->ParamByName("Autor")->AsString = Autor->Text; Query->ParamByName("Genero")->AsString = Genero_libro->Text; Query->ParamByName("Situacion")->AsString = Situacion_libro->Text; Query->ParamByName("Registro")->AsInteger = this->Tag; Query->ExecSQL(); Query->Transaction->Commit(); |
#9
|
||||
|
||||
Es que estás ejecutando la sentencia dentro de un stored procedure, y en éste no estás devolviendo nada.
|
#10
|
||||
|
||||
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Inserción masiva en Firebird | ElDuc | Conexión con bases de datos | 40 | 30-04-2023 10:38:06 |
insercion masiva | Alfredo | Firebird e Interbase | 3 | 12-11-2008 20:34:46 |
Insercion masiva de una BD a otra BD | oscjae | Firebird e Interbase | 5 | 15-12-2006 20:25:49 |
Insercion masiva de registros MUY LENTA | Balda | Firebird e Interbase | 10 | 24-03-2004 21:40:21 |
Inserción masiva en MySQL | Morfo | MySQL | 3 | 09-01-2004 18:05:33 |
|