Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Como mandar llamar un procedimiento almacenado desde delphi (https://www.clubdelphi.com/foros/showthread.php?t=66114)

richy08 02-02-2010 22:26:17

Como mandar llamar un procedimiento almacenado desde delphi
 
Buenos tardes compañeros hace ya bastante tiempo que no usaba procedimientos almacenados :p y se me olvido como mandarlos llamar desde delphi :confused: 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

richy08 03-02-2010 01:06:23

por fin logro que se ejecute pero tengo un detalle en esta linea del procedimiento

Código:

select @totalgen=@ccost*(@porcentaje/100)
      print @ccost
      print @porcentaje
      print @totalgen

puse unos print paara ver que llos select y los parametros llegaran hasta este punto y en su defecto si lo hacen este es el resultado que me da la consola de mssql
Código:

(1 row(s) affected)
16848.04
10
0.00

(1 row(s) affected)

alguna idea de por que @totalgen siempre me arroja 0 mil gracias por su tiempo


La franja horaria es GMT +2. Ahora son las 09:12:53.

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