Leyendo articulos de como hacer insert+update dependiendo de si existe o no un primary key en la tabla, llegue a lo siguiente:
(de nuevo, estoy con firebird 1.5, que boludes seria si tuviera 2.1)
Un SP con algo como esto:
Código:
if exists('CODIGO') then
update TABLANUEVA set
LOCAL2 = (el PRECIO que me dio el select del query2)
where CODIGO = (codigo del select del query2);
else insert into TABLANUEVA (blablablabla el insert normal)
tendria que crear un stored procedure dentro de mi base nueva, y llamar a ese SP en cada while que haga.
entonces en el primer while (del query1 de la base1) hago un insert unicamente porque en la base nueva no hay ningun dato. Y a partir de la segunda base hasta la baseN dentro de los while corro un SP como este, si el codigo ya existe va a actualizar el campo que le correspone a esa tabla (el precio) y sino existe va a insertar la linea entera.
Mi problema radica en que no tengo la menor idea como hacer un SP jaja, estuve leyendo pero no entiendo muy bien eso de especificar input y outputs, y tambien me doy cuenta que en el stored procedure yo tendria que hacer referencia a campos de selects que estan en delphi, y eso tampoco tengo idea; por ejemplo, si empezara el if exists ('CODIGO'), que hace referencia al campo codigo del select del query2, pondria en delphi algo como
if exists ('+IBQuery2.FieldByName('CODIGO').AsString+'), pero como le digo a firebird que ese campo codigo esta en un select que hice con un query en delphi?
Sino lo que se me ocurrio hacer en delphy es directamente tirar un CREATE PROCEDURE con todos esos datos adentro y despues ejecutar el ibquery, pero me parece medio al pedo eso, tendria que hacer un create SP y un drop SP por cada linea del select, le saca el proposito al stored procedure.
Asi que ahora ando peleando con eso.
-----------
Soy un nabo no? hay un componente que es IBStoredProcedure, decime que lo linkeo a la base y despues en StoredProcName elijo el que tengo en la base y me deja linkear variables de delphi con variables de firebird