Sybase SQL Anywhere - Pocedimiento Almacenados SYBASE

 
Vista:

Pocedimiento Almacenados SYBASE

Publicado por moris (5 intervenciones) el 13/12/2007 17:29:32
Estimados de la Comunidad, les saludo, mi consulta ojala me puedan ayudar , necesito saber como hacer procedimientos almacenados (P.A.) en SYBASE, ya que todo lo ejecuto en el programa, y realmente la tardanza en demasiada,
Mi experiencia la tengo en SQL Server 7.0 , pero en SYBASE no se como crearlos, y ademas como deberian llamarse desde los programas, como les explico necesito pasar todos los calculos y procesos a P.A., ya que actualmente la cantidad de informacion a procesar a crecido enormemente, y los tiempos de respuesta sa estan fuera de todo orden.
Estaria agradecido si alguien de la comunidad me pueda ayudar en esto

De ante mano gracias por su atencion a leer esta S.O.S.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Procedimiento Almacenados SYBASE

Publicado por Leopoldo Taylhardat (83 intervenciones) el 29/12/2007 17:16:20
Saludos desde Maracay, Venezuela.

En ASA... .. la tardanza NO necesariamente ocurre porque realizas los procesos desde la aplicación, esto influye un poco pero no es la única causa.
Pueden ser índices mal definidos o no suficientes para los procesos, el caché de la BD muy pequeño, el factor de bloqueo también pequeño....

El proceso para ejecutar las funciones y procedimientos varía por el lenguaje que utilizas, también se pueden ejecutar desde los 'TRIGGERS' de las tablas al ocurrir un evento: inserción, modificación (de cualquier columna o una columna específica), o eliminación.. los triggers se 'disparan' antes o despues de la operación al definirse ...

Despues de crearl (la función o procedimiento) debes asignar permiso de ejecución como pública (esta escrito) a través de 'GRANT'...

La diferencia entre función y procedimiento es que la función retorna un valor...

Para crear una función...
En este caso arma una dirección completa desde los datos, dirección habitación, codigo de ciudad y código postal (si tiene)...

Create function F_DIRECCION (in @DIRECCION varchar(256),in @CIUDAD integer, in @CODIGO_POSTAL varchar(6))
returns varchar(512)
begin
declare @UBICACION varchar(256);
declare @DIR_COMPLETA varchar(256);

select CIUDAD_ESTADO_PAIS into @UBICACION
from VISTA_CIUDAD_ESTADO_PAIS where
VISTA_CIUDAD_ESTADO_PAIS.CODIGO_CIUDAD=@CIUDAD;

if LENGTH(@CODIGO_POSTAL)>0 then
set @UBICACION=@UBICACION+'. C.P. '+@CODIGO_POSTAL
else
set @UBICACION=@UBICACION+'.'
end if;
set @DIR_COMPLETA=@DIRECCION+', '+@UBICACION;
return @DIR_COMPLETA
end
...
grant EXECUTE ON F_DIRECCION to Public
...
para crear un procedimiento... en este caso actualiza el saldo del artículo en el inventario...
...
Create procedure SP_ACT_INVPT(in @EMPRESA integer,in @ALMACEN integer,in @CODIGO integer,in @CANTIDAD UNIDAD_INVPT)
begin

if exists(select 1 from INVENTARIO_ALMACEN where
((INVENTARIO_ALMACEN.CODIGO_EMPRESA=@EMPRESA)
and(INVENTARIO_ALMACEN.CODIGO_ALMACEN=@ALMACEN)
and(INVENTARIO_ALMACEN.CODIGO_ARTICULO=@CODIGO))) then
update INVENTARIO_ALMACEN set
CANTIDAD_EXISTENCIA=CANTIDAD_EXISTENCIA+@CANTIDAD where
((INVENTARIO_ALMACEN.CODIGO_EMPRESA=@EMPRESA)
and(INVENTARIO_ALMACEN.CODIGO_ALMACEN=@ALMACEN)
and(INVENTARIO_ALMACEN.CODIGO_ARTICULO=@CODIGO))
else
insert into INVENTARIO_ALMACEN
( CODIGO_EMPRESA,CODIGO_ALMACEN,CODIGO_ARTICULO,
CANTIDAD_EXISTENCIA,RESERVADA_EXISTENCIA) values(
@EMPRESA,@ALMACEN,@CODIGO,@CANTIDAD,0)
end if
end
...
grant EXECUTE ON SP_ACT_INVPT to Public
...
Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenados SYBASE

Publicado por Dante Balandrano Avalos (2 intervenciones) el 28/01/2008 19:20:26
Definitivamente tus procesos se tardan por la mala deifnición en tus criterios de filtro en las sentencias SQL. No te recomiendo el uso excesivo de triggers en sybase (si los omites mejor), los indices tambien te recomiendo que los erradiques, plantea bien tu modelo de datos, checa que los tipos de datos sean los requeridos, por ejemplo es muy comun entre los principiantes en sybase declarar tipos de datos para datos en dinero, ponerlos en decimales de 2 o más y eso es un error bastante grave si se piensa en un futuro migrarlo o replicarlo, ya que el modelo llega a ser bastante pesado y definitivamente innecesario.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenados SYBASE

Publicado por Leopoldo Taylhardat (83 intervenciones) el 05/02/2008 21:00:28
Mi objeción por esa respuesta... tengo BD con SQLAnywhere desde hace años (desde la V. 6) con triggers, procedimientos, funciones, indices multiples en tablas (hasta 16 en una tabla), cursores, etc, etc... con tablas de más de un millon de registros y no tengo problemas... si así fuera no hubieran escogido a SQLAnywhere como la BD para el censo de USA en el año 2010... digo yo...
Todo está en el diseño...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenados SYBASE

Publicado por Mauricio Castillo (5 intervenciones) el 02/12/2008 21:50:04
ok.
gracias Dante, he estado trabajando y he logrado hacer varias cosas, Leopoldo no te enfades tanto, recuerda que este foro es de ayuda , siempre van ha existir opiniones diferentes , y cada uno dara su experiencia o indicara algun motivo para no estar de acuerdo , pero igual estimado gracias por molestarse en leer esta consulta...

igual se agradece bastante ...

Otra si me pueden ayudar

como puedo en un procedimiento almcenado hacer los isguiente

a = fecha del sistema
b = a - fecha_de_doy

la idea que b de en dias ...

Ojala me puedan ayudar en esta nueva consulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenados SYBASE

Publicado por Jose (1 intervención) el 05/02/2015 18:09:24
ayudemen :( no se usar esta base de datos expliquemen un ejemplo paso a paso para hacer mi tarea :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Procedimiento Almacenados SQL Server

Publicado por Isela (1 intervención) el 13/02/2009 20:38:35
Tengo un problema, he creado un procedimiento almacenado que llega a tardar mas de 8 min en arrojarme los datos, aún cuando el proceso no es tan pesado.
Lo que he notado es que cuando ejecuto el mismo proceso pero fuera del procedimiento tarda solo 1 segundo. alguien podría ayudarme?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenados SYBASE

Publicado por CARLOS LOPEZ (1 intervención) el 04/07/2009 17:50:28
hola!!!!! estoy haciendo un reporte en crsital report que me muestra el listado de costo de ventas por facturas y creditos fiscales ademas de documentos de exportacion pero en nuestro sistema con una modificacion que se le realizo a la ficha de cada producto osea en el inventario ahora alos documentos si tienen codigo=25 ahorale coloca 25-1 yes por que si en una facturade venta van productos terminado sus mienbros que conforman ese produto terminado se venb reflejados ala par del codigo osea que les coloca el item donde esta ese producto en la factura
si el producto terminado es lampara uno de sus mienbros es el foco verdad??

ahora bien el codigo donde fue vendido ese producto terminado es el 25 digamos pero como el foco va vendido como mienbro de este esta en el item 3 entonces el movimiento quedara reflejado en el invenatrio como 25-3 osea°°° bien extraño!"""verdad

lo que yo quiero es hacer un procedimiento almacenado donde hacer una tabla temporal y que me guarde datos del inventario + la facturacion osea los codigos pero sin item si no los reales que no sea 25-3 si no solo 25

como puedo hacer??? porfa los necesito utilizo sybase SQLAnywhere ,,c++Borland builder por favor necesito alguina solucion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pocedimiento Almacenados SYBASE

Publicado por EStela VEga (1 intervención) el 15/11/2012 02:44:58
Hola:
Para llamar a los procedimientos desde php, se usa la función de ejecución
$qry_evaluacion = "exec evl_tipos_evaluacion '','$encuesta'";
$res_evaluacion = ejecutar_sql($qry_evaluacion);

y para hacerlos, se trabaja con la herramienta INTERACTIVE SQL, solo lo ejecutas y con ello se almacena.

CREATE PROCEDURE catedraticos_1
(@periodo char(5), @carrera char(3),@clavegrupo char (7))
/* [ (@param_name datatype [= default] [output] ), ... ] */
WITH RECOMPILE
AS
BEGIN
select distinct materia,grupo
into #agru
from horarios
group by materia


select distinct #agru.materia,#agru.grupo,grupos.periodo, grupos.rfc
into #grupos1
from #agru,grupos
where #agru.materia=grupos.materia and #agru.grupo=grupos.grupo

select #grupos1.rfc
from #grupos1, materias, materias_carreras
where #grupos1.materia=materias.materia and #grupos1.periodo=@periodo and materias_carreras.carrera=@carrera
and materias.materia=materias_carreras.materia and #grupos1.materia=@clavegrupo
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar