Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Grundsatzproblem



Title: Nachricht
Hallo,
 
z.Z. arbeite ich mich in PostgreSQL ein und versuche eine kleine Datenbank, die bisher unter MySql lief, auf PostgreSQL umzuschreiben.
 
Installiert ist die aktuelle Windows-Version von PostgreSQL unter WinXP.
 
Im wesentlichen geht es um die 3 nachfolgenden Funktionen:
 
--------------------------------------
 
CREATE OR REPLACE FUNCTION create_table_buchungsdaten()
  RETURNS void
 
AS $BODY$
 
DECLARE
    v_count integer;
 
BEGIN
 
  SELECT INTO  v_count count(*) FROM pg_tables  where tablename = 'buchungsdaten';
 
  IF v_count = 0 THEN
 
    CREATE TABLE buchungsdaten
       (
       LIKE Journal INCLUDING DEFAULTS
       );
   
    ALTER TABLE  buchungsdaten
    ADD   id   serial;
 
    ALTER TABLE  buchungsdaten
    ADD   stamp_created  timestamp default now();
 
    COMMENT ON TABLE buchungsdaten IS 'Buchungsdaten ohne Storno';
   
  ELSE
 
    TRUNCATE TABLE buchungsdaten;
    SELECT  setval (buchungsdaten_id_seq, 1, false);
 
  END IF;
 
END;
 
$BODY$
 
LANGUAGE 'plpgsql' VOLATILE;
 
COMMENT ON FUNCTION create_Table_Journal() IS 'buchungsdaten';
 
--------------------------------------
 
CREATE OR REPLACE FUNCTION do_buchungsdaten()
RETURNS void
 
AS $BODY$
 
BEGIN
 
  Execute create_table_buchungsdaten ();
 

  INSERT INTO  buchungsdaten
  SELECT  *
  FROM   journal
  WHERE   journal.belegnummer
  NOT IN   (
          SELECT DISTINCT  belegnummer
          FROM    journal
          WHERE    lower (buchungstext) like '<storno>%'
          );
 
END;
 
$BODY$
 
LANGUAGE plpgsql;
 
COMMENT ON FUNCTION do_buchungsdaten() IS 'Erstellt Filter aus Journal die Buchungssätze ohne Storno';
 
--------------------------------------
 
CREATE OR REPLACE FUNCTION run_first() RETURNS void AS $BODY$
 
BEGIN
 
  PERFORM create_table_journal ();
  EXECUTE create_table_buchungsdaten ();
  PERFORM create_table_buchungsdaten_afa_anlagen ();
  PERFORM create_table_buchungsdaten_jahresabschluss ();
  PERFORM create_table_buchungstext_korrektur ();
  PERFORM create_table_daten_afa_anlagen ();
  PERFORM create_table_konten_abschreibung_sachanlagen ();
  PERFORM create_table_konten_anlagen ();
  PERFORM create_table_konten_betrag_ausgleichen ();
  PERFORM create_table_konten_folgejahr ();
  PERFORM create_table_konten_kosten_kfz_anteil_privat ();
  PERFORM create_table_konten_kosten_raum_anteil_firma ();
  PERFORM create_table_konten_kosten_telefon_anteil_privat ();
  PERFORM create_table_konten_umbuchen ();
  PERFORM create_table_konten_unternehmer_dienstreisen ();
  PERFORM create_table_konten_unternehmer_fahrten_zur_arbeitsstaette ();
  PERFORM create_table_konten_unternehmer_verpflegungsmehraufwand ();
  PERFORM create_table_verteilung_fahrten_kfz ();
  PERFORM create_table_verteilung_kosten_raum ();
 
/*
  PERFORM import_konten_abschreibung_sachanlagen ();
  PERFORM import_konten_anlagen ();
  PERFORM import_konten_betrag_ausgleichen ();
  PERFORM import_konten_folgejahr ();
  PERFORM import_konten_kosten_kfz_anteil_privat ();
  PERFORM import_konten_kosten_raum_anteil_firma ();
  PERFORM import_konten_kosten_telefon_anteil_privat ();
  PERFORM import_konten_umbuchen ();
  PERFORM import_konten_unternehmer_dienstreisen ();
  PERFORM import_konten_unternehmer_fahrten_zur_arbeitsstaette ();
  PERFORM import_konten_unternehmer_verpflegungsmehraufwand ();
  PERFORM import_verteilung_fahrten_kfz ();
  PERFORM import_verteilung_kosten_raum ();
*/
 
-- ============================================
 

  PERFORM import_journal ();
  PERFORM import_kontoplan ();
 
--  EXECUTE do_buchungsdaten ();
 

--  PERFORM create_table_stammdaten ();
--  PERFORM create_table_konten_verwendung_von_gegenstaenden ();
--  PERFORM do_daten_afa_anlagen ();
--  PERFORM do_konten_umbuchen ();
--  PERFORM do_korrektur_privat_gebuchte_betriebsausgaben ();
--  PERFORM import_buchungsdaten_afa_anlagen ();
 

END;
 
$BODY$
LANGUAGE plpgsql;
 
--------------------------------------
 

Das Problem (es geht hier speziell um die Tablle "buchungsdaten")
 
Ist die Tabelle "buchungsdaten" nicht in der Datenbank vorhanden, wird sie beim ersten Aufruf von "select run_first()" durch die darin enthaltene Funktion "create_table_buchungsdaten ()" erzeugt. Wiederhole ich den Aufruf von "select run_first()" erhalte ich die nachfolgende Fehlermeldung:
 
--------------------------------------
 
ERROR:  column "buchungsdaten_id_seq" does not exist
KONTEXT:  SQL statement "SELECT  setval (buchungsdaten_id_seq, 1, false)"
PL/pgSQL function "create_table_buchungsdaten" line 27 at SQL statement
PL/pgSQL function "run_first" line 5 at execute statement
 
--------------------------------------
 
"buchungsdaten_id_seq" wird nachweislich beim ersten Durchlauf erzeugt.
 

Was ist die Ursache für diese Fehlermeldung?
Welchen Fehler habe ich in den erstellten Funktionen eingebaut, den ich nicht sehe?
 
 
Für die Funktionsaufrufe habe ich zwischenzeitlich "EXECUTE" statt "PERFORM" eingesetzt, aber das hilft auch nicht!
 
 
 

mfg
 
Friedrich Stockebrand
 
 
 
 


Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group