Buenos tardes compañeros hace ya bastante tiempo que no usaba procedimientos almacenados
y se me olvido como mandarlos llamar desde delphi
he estado leyendo un rato pero nada funciona este es mi procedimiento almacenado creado en mssql
Código SQL
[-]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [dbo].[Frm_posgueInsert] (@npost int, @sservice_code varchar(5), @ccost money, @dfech datetime, @stypexp varchar(30), @sdestypexp varchar(30)
,@ssuplier varchar(5), @ngue int, @iti varchar(1), @staini datetime, @staend datetime, @houini varchar(8)
,@houend varchar(8), @nconf int)
as
declare
@por int, @adeduc varchar(5), @identit int, @totalgen money
begin
insert into renposteosgue( npost, sservice_code, ccost, dfech, stypexp, sdestypexp, ssupplier, ngue, iti , staini, staend, houini, houend, scadena)
values (@npost, @sservice_code, @ccost, @dfech, @stypexp, @sdestypexp, @ssuplier, @ngue, @iti, @staini, @staend, @houini, @houend, 0)
select @identit=SCOPE_IDENTITY()
Declare inserta Cursor For
select por, adeduc from tablaservices t, reservededuc r
where t.sdepartment =r.sapli
and t.sservice_code=@sservice_code
and r.nconf=@nconf and iva='N'
open inserta
FETCH NEXT from inserta into @por, @adeduc
while @@fetch_status = 0
begin
select @totalgen=(@ccost*(@por/100))
insert into renposteosgue( npost, sservice_code, ccost, dfech, stypexp, sdestypexp, ssupplier, ngue, iti,scadena)
values (@npost, @adeduc, @totalgen, @dfech, '', '', 'IMANT', @ngue,'N', @identit)
FETCH NEXT from inserta into @por, @adeduc
end
close inserta
deallocate inserta
end
y este es el pedazo de codigo con el que lo intento llamar alguna ide de por que medice que los parametros no existen
Código Delphi
[-]
SP_Inserta.Close;
SP_Inserta.Parameters[1].Value:=Qry_principal.fieldbyname('npost').Value;
SP_Inserta.Parameters[2].Value:=trim(edt_services.Text);
if Qry_TipCap.FieldByName('bkindchan').Value='D' then
begin
Md_Gral.Qry_KindChan.Close;
Md_Gral.Qry_KindChan.open;
SP_Inserta.Parameters[3].Value:=Qry_detalle.fieldbyname('ccost').value*Md_Gral.Qry_KindChan.fieldbyname('kind').Value;
end
else
begin
SP_Inserta.Parameters[3].Value:=Qry_detalle.fieldbyname('ccost').value;
end;
SP_Inserta.Parameters[4].Value:=Qry_detalle.fieldbyname('dfech').value;
SP_Inserta.Parameters[5].Value:=Qry_detalle.fieldbyname('sTypExp').value;
SP_Inserta.Parameters[6].Value:=Qry_detalle.fieldbyname('sDesTypExp').value;
SP_Inserta.Parameters[7].Value:=trim(edt_sup.Text);
SP_Inserta.Parameters[8].Value:=dbg_notin.Fields[2].Value;
SP_Inserta.Parameters[9].Value:='N';
SP_Inserta.Parameters[10].Value:='';
SP_Inserta.Parameters[11].Value:='';
SP_Inserta.Parameters[12].Value:='';
SP_Inserta.Parameters[13].Value:='';
SP_Inserta.Parameters[14].Value:=qry_principal.fieldbyname('nconf').Value;
SP_Inserta.Prepared:=true;
SP_Inserta.Open;
estoy utilizando un tadostoredprocedure en el cual no tengo nada de codigo adentro, ya le puse la conexion a la bd asi como el nombre del procedimiento gracias por cualquier comentario