Pues sí, es necesario que tenga su clave primaria.
Bueno, mira he creado la tabla a la que le he añadido una clave primaria:
Código:
CREATE TABLE FACTURACION(
ID Integer NOT NULL, <-- tú le pones la clave que te venga mejor
ID_SUSCRIPTOR Varchar(30),
STATUS_FACTURA Varchar(15),
RUTA Integer,
NUMERO_FACTURA Integer,
NUMERO_FACTURA_A Varchar(30),
NUMERO_FACTURA_IMPRESA Integer,
etc...
...
Luego he creado el procedimiento almacenado (para simplificar he dejado la primera parte):
Código:
CREATE PROCEDURE ACTUALIZAR (
X_TIPO_TARIFA Varchar(30),
X_TIPO_FACTURA Varchar(10),
X_MES Integer,
X_YEAR Integer )
AS begin
update facturacion
set base_imponible = cloaca
where tipo_tarifa= :x_tipo_tarifa
and tipo_factura= :x_tipo_factura
and extract(month from fecha)= :x_mes
and extract(year from fecha)= :x_year;
etc...
/* por cierto, el "suspend" aquí no sirve para nada */
end
Y seguidamente lo he ejecutado desde el ibexpert... mentira, estoy usando el flamerobin, pero es lo mismo:
Código:
execute procedure ACTUALIZAR("Residencial","Consumo",1,2010)
Lo he nombrado ACTUALIZAR porque UPDATE puede malinterpretarse con la sentencia "UPDATE".
Y el resultado es, como se supone, correcto:
