Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ejemplos de procedimientos almacenados para interbase? (https://www.clubdelphi.com/foros/showthread.php?t=13689)

pinoxito 27-08-2004 03:16:45

ejemplos de procedimientos almacenados para interbase?
 
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:

Cita:

Empezado por sqlhelp
Syntax
Código:

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:

Cita:

Empezado por sqlhelp
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 */
Código SQL [-]
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 */
Código SQL [-]
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:

Código SQL [-]
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.


Código:

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

Cita:

Empezado por JulioGO
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

Cita:

Empezado por jachguate
¿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é


La franja horaria es GMT +2. Ahora son las 11:37:03.

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