Ayuda para un novato.

24/02/2007 - 11:38 por Enrique | Informe spam
Hola a todos.

Estoy comenzando a usar los procedimientos almacenados, los estoy
ejecutando desde fox, pasandole algunos parametros.

La pregunta es porque si ejecuto un procedimiento pasandole parametros se
trada el doble de tiempo, que si lo ejecutara sin pasarle parametros, es
decir con valores fijos

Caso 1
Select * from mitabla where Codigo = @lcCodigo

Caso 2
Select * from mitabla where Codigo = '0001'

Gracias.

Preguntas similare

Leer las respuestas

#1 Enrique
24/02/2007 - 15:12 | Informe spam
Gracias por responder

Este es el Procedimiento Almacenado:

CREATE PROCEDURE imprimir_Balanza @CodEmp Char(3), @LenMin int, @LenMax int,
@CtaIni as Char(20), @CtaFin Char(20), @FecIni Char(8), @Fecfin Char(8) AS
SELECT A.CodCta, A.NomCta, A.TipSal as Tipo, (case when CtaDetalle = 1 then
'S' else 'N' end) as TipCta,
(case when TipSal = 'D' then
(SELECT SUM(B.Cargo-B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
< @FecIni)
else
(SELECT SUM(B.Abono-B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
< @FecIni)
end) as SldAnt,
(Select Sum(B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda >=
@FecIni and FecPda <= @FecFin) as Cargos,
(Select Sum(B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda >=
@FecIni and FecPda <= @FecFin) as Abonos
FROM dbo.Catalogo A WHERE CodEmp = @CodEmp and Rtrim(A.CodCta) >= @CtaIni
and Rtrim(A.CodCta) <= @CtaFin and len(rtrim(A.CodCta)) >= @LenMin and
len(rtrim(A.CodCta)) <= @LenMax
GO

uso SQL 2000, auque podria usar el 2005 Express. Y estoy usando fox 9.0 Sp1.

Asi lo llamo desde fox:
lnConn = SQLCONNECT("GeoDNS",'GeoUser','GeoUser')
SET DATE ANSI

lcCommand = "Exec Imprimir_Balanza '"+Parametros.CodEmp+"',
"+ALLTRIM(STR(thisform.txtLongMin.Value))+", "+;

ALLTRIM(STR(thisform.txtLonMax.Value))+",
'"+ALLTRIM(thisform.txtCtaIni.Value)+"',
'"+ALLTRIM(thisform.txtCtaFin.Value)+"','20"+;

+ALLTRIM(STRTRAN(DTOC(Parametros.FecFin-DAY(Parametros.Fecfin)+1),'.',''))+"',
'20"+ALLTRIM(STRTRAN(DTOC(Parametros.Fecfin),'.',''))+"'"

SET DATE DMY

SQLEXEC(lnConn, lcCommand, 'ltBalanza')

SQLDISCONNECT(lnConn)

La finalidad del formulario es imprimir una balanza de comprobación, en un
sistema de contablididad, te agradeceré mucho tu respuesta, pues me
preocupan mucho los tiempos de respuestas del sistema.

Debo aclarar que siempre he usado subrutinas propias de fox, pero alguien me
recomendo que usara procedimientos almacenados para mejorar los tiempos de
respuesta, pero la subrutina original de fox se tarda 25 seg. y el
procedimiento de tarda 53 seg. y el volumen de datos que espero será
muchicimo mayor que con el que estoy probando actualmente.



Gracias.


"Alejandro Mesa" escribió en el
mensaje news:
Hola Enrique,

- Puedes postear el procedimiento almacenado y como lo estas llamando?
- Que version de SQL Server estas usando?
- Como lo llamas desde foxpro?

AMB

"Enrique" wrote:

Hola a todos.

Estoy comenzando a usar los procedimientos almacenados, los estoy
ejecutando desde fox, pasandole algunos parametros.

La pregunta es porque si ejecuto un procedimiento pasandole parametros
se
trada el doble de tiempo, que si lo ejecutara sin pasarle parametros, es
decir con valores fijos

Caso 1
Select * from mitabla where Codigo = @lcCodigo

Caso 2
Select * from mitabla where Codigo = '0001'

Gracias.



Respuesta Responder a este mensaje
#2 Alejandro Mesa
24/02/2007 - 20:46 | Informe spam
Hola Enrique,

- Puedes postear el procedimiento almacenado y como lo estas llamando?
- Que version de SQL Server estas usando?
- Como lo llamas desde foxpro?

AMB

"Enrique" wrote:

Hola a todos.

Estoy comenzando a usar los procedimientos almacenados, los estoy
ejecutando desde fox, pasandole algunos parametros.

La pregunta es porque si ejecuto un procedimiento pasandole parametros se
trada el doble de tiempo, que si lo ejecutara sin pasarle parametros, es
decir con valores fijos

Caso 1
Select * from mitabla where Codigo = @lcCodigo

Caso 2
Select * from mitabla where Codigo = '0001'

Gracias.



Respuesta Responder a este mensaje
#3 Alejandro Mesa
24/02/2007 - 23:53 | Informe spam
Enrique,

1 - Primero vamos a conversar sobre la sentencia "select" que estas usando.
En esta haces uso de tres queries correlacionados para calcular [SldAnt],
[Cargos] y [Abonos]. Estos queries se ejecutan por cada fila de la tabla
[Catalogo] que cumple con la condicion que tienes en la clausula "where". La
mayoria de las veces, estos queries correlacionados pueden expresarse
mediante uniones de la tabla principal con las tabla que usa el query
correlacionado, y como resultado se obtiene mejor rendimiento.

select
A.CodCta,
A.NomCta,
A.TipSal as Tipo,
(CASE WHEN A.CtaDetalle = 1 then 'S' else 'N' end) as TipCta,
SUM(
CASE WHEN B.FecPda < @FecIni THEN CASE WHEN A.TipSal = 'D' THEN
(B.Cargo-B.Abono) ELSE (B.Abono-B.Cargo) END ELSE 0 END
) as SldAnt,
SUM(CASE WHEN B.FecPda >= @FecIni and B.FecPda <= @FecFin THEN B.Cargo ELSE
0 END) as Cargos,
SUM(CASE WHEN B.FecPda >= @FecIni and B.FecPda <= @FecFin THEN B.Abono ELSE
0 END) as Abonos
FROM
dbo.Catalogo A
inner join
dbo.DetPartida B
on CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta)
WHERE
A.CodEmp = @CodEmp
and Rtrim(A.CodCta) >= @CtaIni
and Rtrim(A.CodCta) <= @CtaFin
and len(rtrim(A.CodCta)) >= @LenMin
and len(rtrim(A.CodCta)) <= @LenMax

2 - No es buena practica manipular las columnas que participan en una union
o en el filtro de la clausula "where", porque SQL Server no usara las
estadisticas de distribucion de los indices por esas columnas, en caso de
existir, y por lo tanto el plan de ejecucion que se escoja tendra mas costo
que si no manipulamos las columnas. Me refiero a:

- LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta)
- and Rtrim(A.CodCta) >= @CtaIni
- and Rtrim(A.CodCta) <= @CtaFin
- and len(rtrim(A.CodCta)) >= @LenMin
- and len(rtrim(A.CodCta)) <= @LenMax

Por que estas usando las funciones LEFT, RTRIM, LEN en estos casos, puedes
decirme cual es el tipo de data de esas columnas?


AMB


"Enrique" wrote:

Gracias por responder

Este es el Procedimiento Almacenado:

CREATE PROCEDURE imprimir_Balanza @CodEmp Char(3), @LenMin int, @LenMax int,
@CtaIni as Char(20), @CtaFin Char(20), @FecIni Char(8), @Fecfin Char(8) AS
SELECT A.CodCta, A.NomCta, A.TipSal as Tipo, (case when CtaDetalle = 1 then
'S' else 'N' end) as TipCta,
(case when TipSal = 'D' then
(SELECT SUM(B.Cargo-B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
< @FecIni)
else
(SELECT SUM(B.Abono-B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
< @FecIni)
end) as SldAnt,
(Select Sum(B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda >=
@FecIni and FecPda <= @FecFin) as Cargos,
(Select Sum(B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda >=
@FecIni and FecPda <= @FecFin) as Abonos
FROM dbo.Catalogo A WHERE CodEmp = @CodEmp and Rtrim(A.CodCta) >= @CtaIni
and Rtrim(A.CodCta) <= @CtaFin and len(rtrim(A.CodCta)) >= @LenMin and
len(rtrim(A.CodCta)) <= @LenMax
GO

uso SQL 2000, auque podria usar el 2005 Express. Y estoy usando fox 9.0 Sp1.

Asi lo llamo desde fox:
lnConn = SQLCONNECT("GeoDNS",'GeoUser','GeoUser')
SET DATE ANSI

lcCommand = "Exec Imprimir_Balanza '"+Parametros.CodEmp+"',
"+ALLTRIM(STR(thisform.txtLongMin.Value))+", "+;

ALLTRIM(STR(thisform.txtLonMax.Value))+",
'"+ALLTRIM(thisform.txtCtaIni.Value)+"',
'"+ALLTRIM(thisform.txtCtaFin.Value)+"','20"+;

+ALLTRIM(STRTRAN(DTOC(Parametros.FecFin-DAY(Parametros.Fecfin)+1),'.',''))+"',
'20"+ALLTRIM(STRTRAN(DTOC(Parametros.Fecfin),'.',''))+"'"

SET DATE DMY

SQLEXEC(lnConn, lcCommand, 'ltBalanza')

SQLDISCONNECT(lnConn)

La finalidad del formulario es imprimir una balanza de comprobación, en un
sistema de contablididad, te agradeceré mucho tu respuesta, pues me
preocupan mucho los tiempos de respuestas del sistema.

Debo aclarar que siempre he usado subrutinas propias de fox, pero alguien me
recomendo que usara procedimientos almacenados para mejorar los tiempos de
respuesta, pero la subrutina original de fox se tarda 25 seg. y el
procedimiento de tarda 53 seg. y el volumen de datos que espero será
muchicimo mayor que con el que estoy probando actualmente.



Gracias.


"Alejandro Mesa" escribió en el
mensaje news:
> Hola Enrique,
>
> - Puedes postear el procedimiento almacenado y como lo estas llamando?
> - Que version de SQL Server estas usando?
> - Como lo llamas desde foxpro?
>
> AMB
>
> "Enrique" wrote:
>
>> Hola a todos.
>>
>> Estoy comenzando a usar los procedimientos almacenados, los estoy
>> ejecutando desde fox, pasandole algunos parametros.
>>
>> La pregunta es porque si ejecuto un procedimiento pasandole parametros
>> se
>> trada el doble de tiempo, que si lo ejecutara sin pasarle parametros, es
>> decir con valores fijos
>>
>> Caso 1
>> Select * from mitabla where Codigo = @lcCodigo
>>
>> Caso 2
>> Select * from mitabla where Codigo = '0001'
>>
>> Gracias.
>>
>>
>>



Respuesta Responder a este mensaje
#4 Jose Mariano Alvarez
24/02/2007 - 23:56 | Informe spam
Ese tipo de consultas te van a funcionar muy mal, porque no pueden usar los
indices.

Debes evitar el RTRIM y las funciones del tipo F(columna) <condicion> Valor.
Debes cambiarlas por Columna <condicion> FInversa(Valor) o lo que te sirva.


FROM dbo.Catalogo A
WHERE CodEmp = @CodEmp
and Rtrim(A.CodCta) >= @CtaIni
and Rtrim(A.CodCta) <= @CtaFin
and len(rtrim(A.CodCta)) >= @LenMin and
len(rtrim(A.CodCta)) <= @LenMax


No le veo el sentido al RTRIM ya que el blanco esta antes que las letras y
los numeros,



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Enrique" wrote in message
news:%
Gracias por responder

Este es el Procedimiento Almacenado:

CREATE PROCEDURE imprimir_Balanza @CodEmp Char(3), @LenMin int, @LenMax
int, @CtaIni as Char(20), @CtaFin Char(20), @FecIni Char(8), @Fecfin
Char(8) AS
SELECT A.CodCta, A.NomCta, A.TipSal as Tipo, (case when CtaDetalle = 1
then 'S' else 'N' end) as TipCta,
(case when TipSal = 'D' then
(SELECT SUM(B.Cargo-B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and
FecPda < @FecIni)
else
(SELECT SUM(B.Abono-B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and
FecPda < @FecIni)
end) as SldAnt,
(Select Sum(B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
>= @FecIni and FecPda <= @FecFin) as Cargos,
(Select Sum(B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
>= @FecIni and FecPda <= @FecFin) as Abonos
FROM dbo.Catalogo A WHERE CodEmp = @CodEmp and Rtrim(A.CodCta) >= @CtaIni
and Rtrim(A.CodCta) <= @CtaFin and len(rtrim(A.CodCta)) >= @LenMin and
len(rtrim(A.CodCta)) <= @LenMax
GO

uso SQL 2000, auque podria usar el 2005 Express. Y estoy usando fox 9.0
Sp1.

Asi lo llamo desde fox:
lnConn = SQLCONNECT("GeoDNS",'GeoUser','GeoUser')
SET DATE ANSI

lcCommand = "Exec Imprimir_Balanza '"+Parametros.CodEmp+"',
"+ALLTRIM(STR(thisform.txtLongMin.Value))+", "+;

ALLTRIM(STR(thisform.txtLonMax.Value))+",
'"+ALLTRIM(thisform.txtCtaIni.Value)+"',
'"+ALLTRIM(thisform.txtCtaFin.Value)+"','20"+;

+ALLTRIM(STRTRAN(DTOC(Parametros.FecFin-DAY(Parametros.Fecfin)+1),'.',''))+"',
'20"+ALLTRIM(STRTRAN(DTOC(Parametros.Fecfin),'.',''))+"'"

SET DATE DMY

SQLEXEC(lnConn, lcCommand, 'ltBalanza')

SQLDISCONNECT(lnConn)

La finalidad del formulario es imprimir una balanza de comprobación, en un
sistema de contablididad, te agradeceré mucho tu respuesta, pues me
preocupan mucho los tiempos de respuestas del sistema.

Debo aclarar que siempre he usado subrutinas propias de fox, pero alguien
me recomendo que usara procedimientos almacenados para mejorar los tiempos
de respuesta, pero la subrutina original de fox se tarda 25 seg. y el
procedimiento de tarda 53 seg. y el volumen de datos que espero será
muchicimo mayor que con el que estoy probando actualmente.



Gracias.


"Alejandro Mesa" escribió en el
mensaje news:
Hola Enrique,

- Puedes postear el procedimiento almacenado y como lo estas llamando?
- Que version de SQL Server estas usando?
- Como lo llamas desde foxpro?

AMB

"Enrique" wrote:

Hola a todos.

Estoy comenzando a usar los procedimientos almacenados, los estoy
ejecutando desde fox, pasandole algunos parametros.

La pregunta es porque si ejecuto un procedimiento pasandole parametros
se
trada el doble de tiempo, que si lo ejecutara sin pasarle parametros, es
decir con valores fijos

Caso 1
Select * from mitabla where Codigo = @lcCodigo

Caso 2
Select * from mitabla where Codigo = '0001'

Gracias.









Respuesta Responder a este mensaje
#5 Enrique
25/02/2007 - 11:11 | Informe spam
Gracias por responder

Las columnas son de tipo caracter, necesito usar esas funciones por que el
catalgo de cuentas es algo asi:

1
11
1101
110101
1102
110201

Pero de las partidas solo tienen movimiento las cuentas de detalle 110101,
pero debo calcular los saldos de todas, donde 11, debe abarcar los totales
de 1101,
110101, 1102, 110201.



"Alejandro Mesa" escribió en el
mensaje news:
Enrique,

1 - Primero vamos a conversar sobre la sentencia "select" que estas
usando.
En esta haces uso de tres queries correlacionados para calcular [SldAnt],
[Cargos] y [Abonos]. Estos queries se ejecutan por cada fila de la tabla
[Catalogo] que cumple con la condicion que tienes en la clausula "where".
La
mayoria de las veces, estos queries correlacionados pueden expresarse
mediante uniones de la tabla principal con las tabla que usa el query
correlacionado, y como resultado se obtiene mejor rendimiento.

select
A.CodCta,
A.NomCta,
A.TipSal as Tipo,
(CASE WHEN A.CtaDetalle = 1 then 'S' else 'N' end) as TipCta,
SUM(
CASE WHEN B.FecPda < @FecIni THEN CASE WHEN A.TipSal = 'D' THEN
(B.Cargo-B.Abono) ELSE (B.Abono-B.Cargo) END ELSE 0 END
) as SldAnt,
SUM(CASE WHEN B.FecPda >= @FecIni and B.FecPda <= @FecFin THEN B.Cargo
ELSE
0 END) as Cargos,
SUM(CASE WHEN B.FecPda >= @FecIni and B.FecPda <= @FecFin THEN B.Abono
ELSE
0 END) as Abonos
FROM
dbo.Catalogo A
inner join
dbo.DetPartida B
on CodEmp = @CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta)
WHERE
A.CodEmp = @CodEmp
and Rtrim(A.CodCta) >= @CtaIni
and Rtrim(A.CodCta) <= @CtaFin
and len(rtrim(A.CodCta)) >= @LenMin
and len(rtrim(A.CodCta)) <= @LenMax

2 - No es buena practica manipular las columnas que participan en una
union
o en el filtro de la clausula "where", porque SQL Server no usara las
estadisticas de distribucion de los indices por esas columnas, en caso de
existir, y por lo tanto el plan de ejecucion que se escoja tendra mas
costo
que si no manipulamos las columnas. Me refiero a:

- LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta)
- and Rtrim(A.CodCta) >= @CtaIni
- and Rtrim(A.CodCta) <= @CtaFin
- and len(rtrim(A.CodCta)) >= @LenMin
- and len(rtrim(A.CodCta)) <= @LenMax

Por que estas usando las funciones LEFT, RTRIM, LEN en estos casos, puedes
decirme cual es el tipo de data de esas columnas?


AMB


"Enrique" wrote:

Gracias por responder

Este es el Procedimiento Almacenado:

CREATE PROCEDURE imprimir_Balanza @CodEmp Char(3), @LenMin int, @LenMax
int,
@CtaIni as Char(20), @CtaFin Char(20), @FecIni Char(8), @Fecfin Char(8)
AS
SELECT A.CodCta, A.NomCta, A.TipSal as Tipo, (case when CtaDetalle = 1
then
'S' else 'N' end) as TipCta,
(case when TipSal = 'D' then
(SELECT SUM(B.Cargo-B.Abono) FROM dbo.DetPartida B WHERE CodEmp =
@CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and
FecPda
< @FecIni)
else
(SELECT SUM(B.Abono-B.Cargo) FROM dbo.DetPartida B WHERE CodEmp =
@CodEmp
and LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and
FecPda
< @FecIni)
end) as SldAnt,
(Select Sum(B.Cargo) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
>>> @FecIni and FecPda <= @FecFin) as Cargos,
(Select Sum(B.Abono) FROM dbo.DetPartida B WHERE CodEmp = @CodEmp and
LEFT(RTrim(B.CodCta), len(rtrim(A.CodCta))) = Rtrim(A.CodCta) and FecPda
>>> @FecIni and FecPda <= @FecFin) as Abonos
FROM dbo.Catalogo A WHERE CodEmp = @CodEmp and Rtrim(A.CodCta) >=
@CtaIni
and Rtrim(A.CodCta) <= @CtaFin and len(rtrim(A.CodCta)) >= @LenMin and
len(rtrim(A.CodCta)) <= @LenMax
GO

uso SQL 2000, auque podria usar el 2005 Express. Y estoy usando fox 9.0
Sp1.

Asi lo llamo desde fox:
lnConn = SQLCONNECT("GeoDNS",'GeoUser','GeoUser')
SET DATE ANSI

lcCommand = "Exec Imprimir_Balanza '"+Parametros.CodEmp+"',
"+ALLTRIM(STR(thisform.txtLongMin.Value))+", "+;

ALLTRIM(STR(thisform.txtLonMax.Value))+",
'"+ALLTRIM(thisform.txtCtaIni.Value)+"',
'"+ALLTRIM(thisform.txtCtaFin.Value)+"','20"+;

+ALLTRIM(STRTRAN(DTOC(Parametros.FecFin-DAY(Parametros.Fecfin)+1),'.',''))+"',
'20"+ALLTRIM(STRTRAN(DTOC(Parametros.Fecfin),'.',''))+"'"

SET DATE DMY

SQLEXEC(lnConn, lcCommand, 'ltBalanza')

SQLDISCONNECT(lnConn)

La finalidad del formulario es imprimir una balanza de comprobación, en
un
sistema de contablididad, te agradeceré mucho tu respuesta, pues me
preocupan mucho los tiempos de respuestas del sistema.

Debo aclarar que siempre he usado subrutinas propias de fox, pero alguien
me
recomendo que usara procedimientos almacenados para mejorar los tiempos
de
respuesta, pero la subrutina original de fox se tarda 25 seg. y el
procedimiento de tarda 53 seg. y el volumen de datos que espero será
muchicimo mayor que con el que estoy probando actualmente.



Gracias.


"Alejandro Mesa" escribió en el
mensaje news:
> Hola Enrique,
>
> - Puedes postear el procedimiento almacenado y como lo estas llamando?
> - Que version de SQL Server estas usando?
> - Como lo llamas desde foxpro?
>
> AMB
>
> "Enrique" wrote:
>
>> Hola a todos.
>>
>> Estoy comenzando a usar los procedimientos almacenados, los estoy
>> ejecutando desde fox, pasandole algunos parametros.
>>
>> La pregunta es porque si ejecuto un procedimiento pasandole
>> parametros
>> se
>> trada el doble de tiempo, que si lo ejecutara sin pasarle parametros,
>> es
>> decir con valores fijos
>>
>> Caso 1
>> Select * from mitabla where Codigo = @lcCodigo
>>
>> Caso 2
>> Select * from mitabla where Codigo = '0001'
>>
>> Gracias.
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida