Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Stored pocedure (https://www.delphipraxis.net/22420-stored-pocedure.html)

kiar 17. Mai 2004 16:29


Stored pocedure
 
hallo experten,

ich stehe mal wieder auf den schlauch, und lange ist es her ds ich etwas mit stored procedure gemacht habe,

DB: ib
Zugriff : IBSQL
SQL-Code:
CREATE PROCEDURE HELPME (id Integer)
AS
DECLARE VARIABLE LETZTEAENDERUNG TIMESTAMP;
BEGIN
 SELECT LETZTEAENDERUNG FROM ART8 WHERE id = :id;
  IF LETZTEAENDERUNG <> 'NOW' THEN
     LETZTEAENDERUNG =: 'NOW'
  ELSE
     EXIT
  END
folgende Datenaufbau
ID : integer
name : varchar
Letzteaenderung :Timestamp

schon beim execute Query kommt die Fehlermeldung
Zitat:

Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Helft mir mal auf die Sprünge

raik

edit : dicke Finger und kleine Tasten :mrgreen:

frankg 17. Mai 2004 17:30

Re: Stored pocedure
 
Hi Kiar!

In Ermangelung eines Interbase Servers (ich hab hier nur nen Oracle zum Spielen!) rate ich einfach mal, aber wenn das mit den Stored Procedures so geht wie in Oracle, dann hast Du schlicht und einfach zwei Semikoli vergessen (siehe unten). Hoffe das behebt das Problem.

Viele Grüsse

Frank

SQL-Code:
CREATE PROCEDURE HELPME (id Integer)
AS
DECLARE VARIABLE LETZTEAENDERUNG TIMESTAMP;
BEGIN
 SELECT LETZTEAENDERUNG FROM ART8 WHERE id = :id;
  IF LETZTEAENDERUNG <> 'NOW' THEN
     LETZTEAENDERUNG =: 'NOW'; <<<<<<< HIER
  ELSE
     EXIT; <<<<<< HIER AUCH
  END

Klabim 17. Mai 2004 17:45

Re: Stored pocedure
 
Code:
CREATE PROCEDURE HELPME (id Integer)
AS
DECLARE VARIABLE LETZTEAENDERUNG TIMESTAMP;
BEGIN
SELECT LETZTEAENDERUNG FROM ART8 WHERE id = :id;
  IF LETZTEAENDERUNG <> 'NOW' THEN
     LETZTEAENDERUNG =: 'NOW'; <<<<<<< HIER //sollte so aussehen LETZTEAENDERUNG [b]:=[/b] 'NOW';
  ELSE
     EXIT;
  END
[edit=MrSpock]Code Tags eingefügt. Mfg, MrSpock[/edit]

kiar 17. Mai 2004 17:46

Re: Stored pocedure
 
hallo frank,

ich glaube der Interbase server tickt anders, jedenfalls, haben deine einwände 'zu mindestens bei meiner procedure' :mrgreen: nicht zum erfolg geführt.

danke raik

Klabim 17. Mai 2004 17:47

Re: Stored pocedure
 
Also ich meine wenn dein Zuweisungsoperator genau so im Quelltext steht kommt es unweigerlich zu einer Fehlermeldung!

phlux 17. Mai 2004 17:48

Re: Stored pocedure
 
Hi Klabim :hi:
Herzlich willkommen in der DP :dp:
Bitte formatiere fürs nächste mal deinen Code, für den ObjectPascal Teil gibt es oben den Butten "Delphi-Code", falls du SQL Statements posten willst nimm den "SQL" Button zuhilfe, damit kann man den Quellcode hier im Forum nämlich hervorragend formatieren.

Viel Spass noch im Forum :zwinker:

mfg phlux :hi:

kiar 17. Mai 2004 17:53

Re: Stored pocedure
 
hallo klabim :mrgreen:

das ist es auch nicht, ich habe jetzt die procedure
SQL-Code:
 
set Term ^
...
^
eingekreist und jetzt moniert er das
SQL-Code:
SELECT LETZTEAENDERUNG FROM ART8 WHERE id = :id;<---- das letzte zeichen
raik

CenBells 17. Mai 2004 18:45

Re: Stored pocedure
 
Hallo,

probier es doch mal so
SQL-Code:
CREATE PROCEDURE HELPME (id Integer)
AS
  DECLARE VARIABLE LETZTEAENDERUNG TIMESTAMP;
BEGIN
  SELECT LETZTEAENDERUNG
    FROM ART8 
   WHERE id = :id;
  IF LETZTEAENDERUNG <> 'NOW' THEN
     LETZTEAENDERUNG = 'NOW'; -- Ohne :
  ELSE
     EXIT;
END
Gruß
Ken

Marcel Gascoyne 17. Mai 2004 19:36

Re: Stored pocedure
 
Deine Procedure macht so gar nix. Du hast weder einen Ausgabeparameter definiert noch verändert Deine Prozedur irgendwelche Daten. Ich nehme mal an das Du die Variable LETZTEAENDERUNG zurückgeliefert haben möchtest. In diesem Fall sollte die Procedure etwa so aussehen:

SQL-Code:
SET TERM !!;
CREATE PROCEDURE HELPME (
  P_ID INTEGER
)
RETURNS (
  LETZTEAENDERUNG TIMESTAMP
)
AS
BEGIN
  SELECT LETZTEAENDERUNG
  FROM  ART8
  WHERE ID = :P_ID
  INTO  :LETZTEAENDERUNG;
 
  IF LETZTEAENDERUNG <> 'NOW' THEN
    LETZTEAENDERUNG = 'NOW';

  SUSPEND;
END
!!
Gruß,
Marcel

Hansa 17. Mai 2004 20:49

Re: Stored pocedure
 
viel zu kompliziert :

SQL-Code:
SET TERM ^;

CREATE PROCEDURE HELPME RETURNS (LETZTEAENDERUNG TIMESTAMP)
AS
begin
  LETZTEAENDERUNG = 'NOW';
  suspend;
end
^
Was mich nur wundert : derselbe Code in einem Trigger geht bei mir von Delphi aus nicht. :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz