Grundsatzproblem

This is a multi-part message in MIME format.

------=_NextPart_000_0007_01C5FC7A.DAC39E70
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

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 =3D
'buchungsdaten';

IF v_count =3D 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 ();
*/

-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


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





------=_NextPart_000_0007_01C5FC7A.DAC39E70
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<TITLE>Nachricht</TITLE>

<META content=3D"MSHTML 6.00.2900.2769" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3DArial size=3D2>Hallo, </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>z.Z. arbeite ich mich in PostgreSQL ein =
und
versuche eine kleine Datenbank, die bisher unter MySql lief, auf =
PostgreSQL
umzuschreiben. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Installiert ist die aktuelle =
Windows-Version von
PostgreSQL unter WinXP. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Im wesentlichen geht es um die 3 =
nachfolgenden
Funktionen: </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial =
size=3D2>--------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>CREATE OR REPLACE FUNCTION
create_table_buchungsdaten()<BR>  RETURNS void <BR>  <BR>AS
$BODY$</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>DECLARE<BR>    v_count
integer;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>BEGIN</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>  SELECT INTO  v_count =
count(*) FROM
pg_tables  where tablename =3D 'buchungsdaten';</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>  IF v_count =3D 0 THEN<BR> 
<BR>    CREATE =
TABLE buchungsdaten<BR>   
   (<BR>       LIKE Journal =

INCLUDING DEFAULTS <BR>   
   );<BR>    <BR>    ALTER
TABLE  buchungsdaten<BR>   
ADD   id   serial;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>    ALTER
TABLE  buchungsdaten<BR>   
ADD   stamp_created  timestamp default
now();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>    COMMENT ON TABLE =
buchungsdaten
IS 'Buchungsdaten ohne Storno';<BR>    <BR> 
ELSE</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>    TRUNCATE
TABLE buchungsdaten;<BR>    SELECT  setval =

(buchungsdaten_id_seq, 1, false);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>  END IF;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>END;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>$BODY$</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>LANGUAGE 'plpgsql' =
VOLATILE;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>COMMENT ON FUNCTION =
create_Table_Journal() IS
'buchungsdaten';</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial =
size=3D2>--------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>CREATE OR REPLACE FUNCTION =
do_buchungsdaten()
<BR>RETURNS void </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>AS $BODY$</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>BEGIN<BR>  <BR>  Execute
create_table_buchungsdaten ();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>  INSERT
INTO  buchungsdaten<BR>  SELECT  *<BR> 
FROM   journal<BR>  WHERE
  journal.belegnummer<BR>  NOT IN
  (<BR>          =
SELECT
DISTINCT
 belegnummer<BR>        &nbs=
p; FROM
   journal<BR>       &n=
bsp; 
WHERE    lower (buchungstext) like
'<storno>%'<BR>        &nbs=
p;
);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>END;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>$BODY$</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>LANGUAGE plpgsql;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>COMMENT ON FUNCTION do_buchungsdaten() =
IS 'Erstellt
Filter aus Journal die Buchungssätze ohne Storno';</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial =
size=3D2>--------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>CREATE OR REPLACE FUNCTION run_first() =
RETURNS void
AS $BODY$</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>BEGIN</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>  PERFORM create_table_journal =
();<BR> 
EXECUTE create_table_buchungsdaten ();<BR>  PERFORM
create_table_buchungsdaten_afa_anlagen ();<BR>  PERFORM
create_table_buchungsdaten_jahresabschluss ();<BR>  PERFORM
create_table_buchungstext_korrektur ();<BR>  PERFORM
create_table_daten_afa_anlagen ();<BR>  PERFORM
create_table_konten_abschreibung_sachanlagen ();<BR>  PERFORM
create_table_konten_anlagen ();<BR>  PERFORM
create_table_konten_betrag_ausgleichen ();<BR>  PERFORM
create_table_konten_folgejahr ();<BR>  PERFORM
create_table_konten_kosten_kfz_anteil_privat ();<BR>  PERFORM
create_table_konten_kosten_raum_anteil_firma ();<BR>  PERFORM
create_table_konten_kosten_telefon_anteil_privat ();<BR>  PERFORM
create_table_konten_umbuchen ();<BR>  PERFORM
create_table_konten_unternehmer_dienstreisen ();<BR>  PERFORM
create_table_konten_unternehmer_fahrten_zur_arbeitsstaette ();<BR>  =
PERFORM
create_table_konten_unternehmer_verpflegungsmehraufwand ();<BR>  =
PERFORM
create_table_verteilung_fahrten_kfz ();<BR>  PERFORM
create_table_verteilung_kosten_raum ();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>/*<BR>  PERFORM
import_konten_abschreibung_sachanlagen ();<BR>  PERFORM
import_konten_anlagen ();<BR>  PERFORM =
import_konten_betrag_ausgleichen
();<BR>  PERFORM import_konten_folgejahr ();<BR>  PERFORM
import_konten_kosten_kfz_anteil_privat ();<BR>  PERFORM
import_konten_kosten_raum_anteil_firma ();<BR>  PERFORM
import_konten_kosten_telefon_anteil_privat ();<BR>  PERFORM
import_konten_umbuchen ();<BR>  PERFORM
import_konten_unternehmer_dienstreisen ();<BR>  PERFORM
import_konten_unternehmer_fahrten_zur_arbeitsstaette ();<BR>  =
PERFORM
import_konten_unternehmer_verpflegungsmehraufwand ();<BR>  PERFORM
import_verteilung_fahrten_kfz ();<BR>  PERFORM
import_verteilung_kosten_raum ();<BR>*/</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>--
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>  PERFORM import_journal =
();<BR> 
PERFORM import_kontoplan ();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>--  EXECUTE do_buchungsdaten =
();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>--  PERFORM =
create_table_stammdaten
();<BR>--  PERFORM create_table_konten_verwendung_von_gegenstaenden =

();<BR>--  PERFORM do_daten_afa_anlagen ();<BR>--  PERFORM
do_konten_umbuchen ();<BR>--  PERFORM
do_korrektur_privat_gebuchte_betriebsausgaben ();<BR>--  PERFORM
import_buchungsdaten_afa_anlagen ();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>END;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>$BODY$<BR>LANGUAGE =
plpgsql;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial =
size=3D2>--------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>Das Problem (es geht hier speziell =
um die
Tablle "buchungsdaten")</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>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<SPAN class=3D814293703-09122005> </SPAN>ich den Aufruf von =
"select
run_first()" erhalte ich die nachfolgende Fehlermeldung:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial =
size=3D2>--------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>ERROR:  column =
"buchungsdaten_id_seq" does not
exist<BR>KONTEXT:  SQL statement "SELECT  setval
(buchungsdaten_id_seq, 1, false)"<BR>PL/pgSQL function
"create_table_buchungsdaten" line 27 at SQL statement<BR>PL/pgSQL =
function
"run_first" line 5 at execute statement</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial =
size=3D2>--------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>"buchungsdaten_id_seq" wird =
nachweislich beim
ersten Durchlauf erzeugt.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>Was ist die Ursache für diese =
Fehlermeldung?
<BR>Welchen Fehler habe ich in den erstellten Funktionen eingebaut, den =
ich
nicht sehe? </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Für die Funktionsaufrufe habe ich =
zwischenzeitlich
"EXECUTE" statt "PERFORM" eingesetzt, aber das hilft auch =
nicht!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><BR><FONT face=3DArial size=3D2>mfg</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Friedrich Stockebrand</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV> </DIV></BODY></HTML>

------=_NextPart_000_0007_01C5FC7A.DAC39E70--
Friedrich Stockebrand [ Fr, 09 Dezember 2005 04:41 ] [ ID #1095330 ]

Re: Grundsatzproblem

am 09.12.2005, um 4:41:43 +0100 mailte Friedrich Stockebrand folgendes:
>
> TRUNCATE TABLE buchungsdaten;
> SELECT setval (buchungsdaten_id_seq, 1, false);
>
> 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
>
> Was ist die Ursache für diese Fehlermeldung?
> Welchen Fehler habe ich in den erstellten Funktionen eingebaut, den ich
> nicht sehe?

Schuß ins Blaue:

SELECT setval ('buchungsdaten_id_seq', 1, false);
^ ^



HTH, Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47212, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=3D=3D=3D Schollglas Unternehmensgruppe =3D=3D=3D

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org
andreas.kretschmer [ Fr, 09 Dezember 2005 11:37 ] [ ID #1095331 ]

Re: Grundsatzproblem

Hallo!

> beim ersten Aufruf von "select run_first()" durch die darin enthaltene
> Funktion "create_table_buchungsdaten ()" erzeugt. Wiederhole ich den =
> Aufruf

Schusss ins blaue:
Hast du "COMMIT"ed? Ist oft ein Problem beim Umstieg von MySQL=>PG, dass
man nicht weiss dass es in PG Transaktionen gibt ;-)
http://www.postgresql.org/docs/8.1/static/sql-commit.html

Lg,
AXEL.


---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster
Axel Straschil [ Fr, 09 Dezember 2005 11:39 ] [ ID #1095332 ]

Re: Grundsatzproblem

am 09.12.2005, um 10:39:43 +0000 mailte Axel Straschil folgendes:
> Hallo!
>
> > beim ersten Aufruf von "select run_first()" durch die darin enthalten=
e
> > Funktion "create_table_buchungsdaten ()" erzeugt. Wiederhole ich den =
=3D
> > Aufruf
>
> Schusss ins blaue:
> Hast du "COMMIT"ed? Ist oft ein Problem beim Umstieg von MySQL=3D>PG, d=
ass
> man nicht weiss dass es in PG Transaktionen gibt ;-)

*LOL*.

Aber ich glaube nicht, daß es das ist...


Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47212, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=3D=3D=3D Schollglas Unternehmensgruppe =3D=3D=3D

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org
andreas.kretschmer [ Fr, 09 Dezember 2005 11:50 ] [ ID #1095333 ]

Re: Grundsatzproblem

--On Freitag, Dezember 09, 2005 04:41:43 +0100 Friedrich Stockebrand
<Friedrich.Stockebrand [at] t-online.de> wrote:

> Hallo,
>

Servus

> 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 =3D
> 'buchungsdaten';
>
> IF v_count =3D 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);
>

Hier ist der Fehler: Der Sequence muss über seinen Namen referenziert
werden und kann nicht als Bezeichner verwendet werden, also:

SELECT setval ('buchungsdaten_id_seq'::text, 1, false);

oder in 8.1 neu:

SELECT setval ('buchungsdaten_id_seq'::regclass, 1, false);

> END IF;
>
> END;
>
> $BODY$
>
> LANGUAGE 'plpgsql' VOLATILE;



--
Thanks

Bernd


---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo [at] postgresql.org so that your
message can get through to the mailing list cleanly
Bernd Helmle [ Fr, 09 Dezember 2005 12:18 ] [ ID #1095334 ]

Re: Grundsatzproblem

This is a multi-part message in MIME format.

------=_NextPart_000_0001_01C5FCD2.A2B882E0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hallo,


die Lösung des Problems lautet:


Transform setval ('buchungsdaten_id_seq', 1, false);

Transform setval ('buchungsdaten_id_seq'::text, 1, false);

Transform setval ('buchungsdaten_id_seq'::regclass, 1, false);



Alle 3 Versionen sind in 8.1 gültig



mfg

Friedrich Stockebrand


------=_NextPart_000_0001_01C5FCD2.A2B882E0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<TITLE>Nachricht</TITLE>

<META content=3D"MSHTML 6.00.2900.2769" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2>Hallo,</FONT></DIV>
<DIV> </DIV><FONT face=3DArial color=3D#0000ff size=3D2>
<DIV><BR>die Lösung des Problems lautet:</DIV>
<DIV> </DIV>
<DIV><BR>Transform setval ('buchungsdaten_id_seq', 1, false);</DIV>
<DIV> </DIV>
<DIV>Transform setval ('buchungsdaten_id_seq'::text, 1, false);</DIV>
<DIV> </DIV>
<DIV>Transform setval ('buchungsdaten_id_seq'::regclass, 1, =
false);</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Alle 3 Versionen sind in 8.1 gültig</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>mfg</DIV>
<DIV> </DIV>
<DIV>Friedrich Stockebrand<BR></FONT></DIV></BODY></HTML>

------=_NextPart_000_0001_01C5FCD2.A2B882E0--
Friedrich Stockebrand [ Fr, 09 Dezember 2005 15:10 ] [ ID #1095341 ]

Re: Grundsatzproblem

am 09.12.2005, um 15:10:04 +0100 mailte Friedrich Stockebrand folgendes:
> Hallo,
>
>
> die Lösung des Problems lautet:
>
>
> Transform setval ('buchungsdaten_id_seq', 1, false);

Sicher?

test=3D# select setval ('foo_seq', 1, false);
setval
--------
1
(1 row)

test=3D# transform select setval ('foo_seq', 1, false);
FEHLER: Fehler =BBSyntaxfehler=AB bei =BBtransform=AB at character 1
LINE 1: transform select setval ('foo_seq', 1, false);
^

test=3D# select version();
version
------------------------------------------------------------ -------------=
------------------
PostgreSQL 8.1.0 on i386-pc-linux-gnu, compiled by GCC cc (GCC) 3.3.5 (D=
ebian 1:3.3.5-13)
(1 row)


Arbeitest Du mit irgend einem Treiber wie ODBC oder sowas?


Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47212, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=3D=3D=3D Schollglas Unternehmensgruppe =3D=3D=3D

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster
andreas.kretschmer [ Fr, 09 Dezember 2005 15:31 ] [ ID #1095342 ]

Re: Grundsatzproblem

Ich bin mal so frei, aus einer privaten Mail, die den Ursprung in dieser
Liste hatte, hier wieder zu zitieren. Man möge mir gnädig sein...


am 09.12.2005, um 21:18:14 +0100 mailte Friedrich Stockebrand folgendes:
> > > die Lösung des Problems lautet:
> > >
> > >
> > > Transform setval ('buchungsdaten_id_seq', 1, false);
> >
> > Sicher?
> >
> > test=3D# select setval ('foo_seq', 1, false);
> > setval
> > --------
> > 1
> > (1 row)
> >
> > test=3D# transform select setval ('foo_seq', 1, false);
> > FEHLER: Fehler =BBSyntaxfehler=AB bei =BBtransform=AB at character 1=

> > LINE 1: transform select setval ('foo_seq', 1, false);
> > ^
> >
>
> Hallo Herr Kretschmer,
>
> PostgreSql 8.1.0-2 ist bei mir unter WinXp (Workstation) installiert.
> Zusätzlich ist pgAdmin III installiet. Das Abfragetool in pgAdmin III
> entspricht wohl der Kommandozeilenebene von PostgreSql.
>
> Die Frage >Sicher? muß ich mit ja beantworten. Die gemailte Lösung =
war auch
> ausgetestet. Ich hätte vielleicht noch die Randbedingungen dazu schre=
iben
> sollen.

Meine Frage in die Runde: warum hat 'pgAdmin III' einen anderen
SQL-Sprachschatz als psql? Ich bezweifle nicht die Aussage von
Friedrich, mich wundert, daß die DB-Engine unterschiedliche Ergebnisse
liefert.


> Ihre Tests haben Sie auf der Kommandozeilenebene durchgeführt. Dort k=
ann man
> eine Funktion nur mit dem Befehl "select" starten. Der Befehl "transfor=
m"
> existiert für die Kommandozeilenebene nicht, daher die Fehlermeldung.=


s/Kommandozeilenebene/psql/, aber sonst okay.


>
> Die Ausführung des Befehls "select setval ('buchungsdaten_id_seq', 1,
> false);" in meiner Funktion lieferte mir die nachfolgende Fehlermeldung=
:
>
> -------------------------------------------------
> ERROR: SELECT query has no destination for result data
> TIP: If you want to discard the results, use PERFORM instead.
> KONTEXT: PL/pgSQL function "create_table_buchungsdaten" line 25 at SQL
> statement
> PL/pgSQL function "do_buchungsdaten" line 4 at execute statement
> SQL statement "SELECT do_buchungsdaten ()"
> PL/pgSQL function "run_first" line 45 at perform
> -------------------------------------------------
>
> Daher der Aufruf mit "transform".

..oO( mit der Bitte um Erhellung )


Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47212, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=3D=3D=3D Schollglas Unternehmensgruppe =3D=3D=3D

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq
andreas.kretschmer [ Fr, 09 Dezember 2005 22:01 ] [ ID #1095345 ]

Re: Grundsatzproblem

A. Kretschmer writes:

> am 09.12.2005, um 21:18:14 +0100 mailte Friedrich Stockebrand folgende=
s:
[...]
> Die Ausführung des Befehls "select setval ('buchungsdaten_id_seq', 1,
> false);" in meiner Funktion lieferte mir die nachfolgende Fehlermeldung=
:
>
>> -------------------------------------------------
>> ERROR: SELECT query has no destination for result data
>> TIP: If you want to discard the results, use PERFORM instead.
>> KONTEXT: PL/pgSQL function "create_table_buchungsdaten" line 25 at SQ=
L
>> statement
>> PL/pgSQL function "do_buchungsdaten" line 4 at execute statement
>> SQL statement "SELECT do_buchungsdaten ()"
>> PL/pgSQL function "run_first" line 45 at perform
>> -------------------------------------------------
>>
>> Daher der Aufruf mit "transform".
>
> .oO( mit der Bitte um Erhellung )

Tippfehler? Ich bezweifle irgendwie, daß pgadmin aus einem "transform"
das benötigte "perform" machte.

Gruß
Andreas
--

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
Andreas Seltenreich [ Fr, 09 Dezember 2005 22:23 ] [ ID #1095346 ]
Datenbanken » gmane.comp.db.postgresql.german » Grundsatzproblem

Vorheriges Thema: Jdbc Resultset zu gross
Nächstes Thema: Volltextsuche/ Balancing