PDA

Ver la Versión Completa : ejemplos de procedimientos almacenados para interbase?


pinoxito
27-08-2004, 03:16:45
Hola amigos, tengo que duplicar facturas desde mi programa, y desearia hacerlo con un procedimiento almacenado, he estado mirando la ayuda de interbase pero solo hay dos ejemplos muy pobres. Alguien tiene o sabe donde mirar ejemplos del tipo que yo necesito?

jachguate
27-08-2004, 16:17:37
Creo que el concepto de "pobre" es algo bastante subjetivo. Habrá que saber si has buscado lo suficiente, o tu busqueda también es "pobre".

¿que le falta a los ejemplos?

quizas lo que busques es la sintaxis completa:


Syntax

CREATE PROCEDURE name
[(param <datatype> [, param <datatype> …])]
[RETURNS <datatype> [, param <datatype> …])]
AS <procedure_body> [terminator]

<procedure_body> =
[<variable_declaration_list>]
<block>
<variable_declaration_list> =
DECLARE VARIABLE var <datatype>;
[DECLARE VARIABLE var <datatype>; …]
<block> =
BEGIN
<compound_statement>
[<compound_statement> …]
END
<compound_statement> = {<block> | statement;}

<datatype> = SMALLINT
| INTEGER
| FLOAT
| DOUBLE PRECISION
| {DECIMAL | NUMERIC} [(precision [, scale])]
| {DATE | TIME | TIMESTAMP)
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR}
[(int)] [CHARACTER SET charname]

| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR} [VARYING] [(int)]



De esta misma ayuda, extraigo el ejemplo:


Examples The following procedure, SUB_TOT_BUDGET, takes a department number as its input parameter, and returns the total, average, minimum, and maximum budgets of departments with the specified HEAD_DEPT.

/* Compute total, average, smallest, and largest department budget.
*Parameters:
* department id
*
*Returns:
* total budget
* average budget
* min budget
* max budget */

SET TERM !! ;
CREATE PROCEDURE SUB_TOT_BUDGET (HEAD_DEPT CHAR(3))
RETURNS (tot_budget DECIMAL(12, 2), avg_budget DECIMAL(12, 2),
min_budget DECIMAL(12, 2), max_budget DECIMAL(12, 2))
AS
BEGIN
SELECT SUM(BUDGET), AVG(BUDGET), MIN(BUDGET), MAX(BUDGET)
FROM DEPARTMENT
WHERE HEAD_DEPT = :head_dept
INTO :tot_budget, :avg_budget, :min_budget, :max_budget;
EXIT;

END !!

SET TERM ; !!


The following select procedure, ORG_CHART, displays an organizational chart:

/* Display an org-chart.
*
* Parameters:
* --
* Returns:
* parent department
* department name
* department manager
* manager's job title
* number of employees in the department */

CREATE PROCEDURE ORG_CHART
RETURNS (HEAD_DEPT CHAR(25), DEPARTMENT CHAR(25),
MNGR_NAME CHAR(20), TITLE CHAR(5), EMP_CNT INTEGER)
AS
DECLARE VARIABLE mngr_no INTEGER;
DECLARE VARIABLE dno CHAR(3);
BEGIN
FOR SELECT H.DEPARTMENT, D.DEPARTMENT, D.MNGR_NO, D.DEPT_NO

FROM DEPARTMENT D
LEFT OUTER JOIN DEPARTMENT H ON D.HEAD_DEPT = H.DEPT_NO
ORDER BY D.DEPT_NO
INTO :head_dept, :department, :mngr_no, :dno
DO
BEGIN
IF (:mngr_no IS NULL) THEN
BEGIN
MNGR_NAME = '--TBH--';
TITLE = '';
END
ELSE
SELECT FULL_NAME, JOB_CODE
FROM EMPLOYEE
WHERE EMP_NO = :mngr_no
INTO :mngr_name, :title;
SELECT COUNT(EMP_NO)

FROM EMPLOYEE
WHERE DEPT_NO = :dno
INTO :emp_cnt;
SUSPEND;
END

END !!


When ORG_CHART is invoked, for example in the following isql statement:


SELECT * FROM ORG_CHART


it displays the department name for each department, which department it is in, the department manager's name and title, and the number of employees in the department.



HEAD_DEPT DEPARTMENT MGR_NAME TITLE EMP_CNT
===================== =================== ================ ==== =======
Corporate Headquarters Bender, Oliver H. CEO 2
Corporate Headquarters Sales and Marketing MacDonald, Mary S. VP 2
Sales and Marketing Pacific Rim Headquarters Baldwin, Janet Sales 2
Pacific Rim Headquarters Field Office: Japan Yamamoto, Takashi SRep 2
Pacific Rim Headquarters Field Office: Singapore --TBH-- 0



¿es suficiente?

¿Buscas por algun tema en particular?
Será mejor que lo aclares, no te parece. Quizas mi respuesta siga siendo pobre para tus intereses, quizas tu forma de plantear lo que buscas sea el origen de eso.

Hasta luego.

;)

JulioGO
30-08-2004, 01:16:03
Seria mas facil si nos detallas el problema que tienes. Las respuestas no se van a generar si no explicas un poco el dilema.

Saludos.

aurafern
03-09-2004, 18:54:30
Seria mas facil si nos detallas el problema que tienes. Las respuestas no se van a generar si no explicas un poco el dilema.

Saludos.
Cordial saludo. Aprovechando que PINOXITO ha hecho esta consulta, voy a citar un caso para el cual no he encontrado una solucion apropiada. Necesito crear una base de datos para modulo de produccion que me permita crear productos y hacer explosion de ellos

ejemplo: para producir el producto 001 (un pastel en hojaldre) , necesito:

el producto masa1 : 20gr
el producto guiso : 10 gr
el producto pollo desmechado : 3 gr
y la mano de obra

el producto masa1 a su vez es otra receta:
harina 5gr
agua 0.3ml
sal 1gr


el producto guiso a su vez es otra receta:
tomate 5gr
cebolla 5gr
sal 1gr

el producto pollo desmechado se saca del inventario (se compra procesado y desmechado)

Cómo es la estructura de las tablas para ingresar la receta y cómo consulto, por ejemplo la receta detallada hasta el ultimo nivel?.

informe detallado de cuanto me cuesta fabricar un pastel:

Item Costo
===================================================
pastel en hojaldre 1500
masa1 250
harina 5gr 200
agua 0.3ml 20
sal 1gr 30
guiso 350
tomate 5gr 150
cebolla 5gr 170
sal 1gr 30
pollo 400
mano de obra 500

jachguate
03-09-2004, 18:56:58
¿Estas solicitando que alguien te haga el sistema?
:confused:

aurafern
03-09-2004, 19:03:12
¿Estas solicitando que alguien te haga el sistema?
:confused:
No espero que me hagan el sistema, solicito una ayuda sobre un procedimiento que creo que es recursivo pero la o las tablas donde voy a consultar deben estar creadas de la manera que no he encontrado. Por eso trate de ser lo mas clara posible para conseguir la respuesta precisa, de ustedes que saben mucho a cerca de lo que yo todavía no sé