Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL

 

Einfache gespeicherte Prozeduren in Embedded SQL

Sie können gespeicherte Prozeduren in Embedded SQL erstellen und aufrufen.

Eine CREATE PROCEDURE-Anweisung kann wie jede andere Datendefinitions-Anweisung, z.B. CREATE TABLE, eingebettet werden. Sie können auch eine CALL-Anweisung einbetten, um eine gespeicherte Prozedur auszuführen. Das folgende Code-Fragment veranschaulicht das Erstellen und Ausführen einer gespeicherten Prozedur in Embedded SQL



EXEC SQL CREATE PROCEDURE pettycash( 
 IN Amount DECIMAL(10,2) )
BEGIN
 UPDATE account
 SET balance = balance - Amount
 WHERE name = 'bank';

 UPDATE account
 SET balance = balance + Amount
 WHERE name = 'pettycash expense';
END;
EXEC SQL CALL pettycash( 10.72 );

Wenn Sie Werte von Hostvariablen an eine gespeicherte Prozedur weitergeben oder die Ausgabevariable abrufen möchten, bereiten Sie eine CALL-Anweisung vor und führen Sie sie aus. Das folgende Code-Fragment veranschaulicht die Verwendung von Hostvariablen. Sowohl die USING als auch die INTO-Klausel werden in der EXECUTE-Anweisung benutzt.



EXEC SQL BEGIN DECLARE SECTION;
double  hv_expense;
double  hv_balance;
EXEC SQL END DECLARE SECTION;

// Code here
EXEC SQL CREATE PROCEDURE pettycash(
   IN expense  DECIMAL(10,2),
   OUT endbalance DECIMAL(10,2) )
BEGIN
  UPDATE account
  SET balance = balance - expense
  WHERE name = 'bank';
  UPDATE account
  SET balance = balance + expense
  WHERE name = 'pettycash expense';

  SET endbalance = ( SELECT balance FROM account
         WHERE name = 'bank' );
END;

EXEC SQL PREPARE S1 FROM 'CALL pettycash( ?, ? )';
EXEC SQL EXECUTE S1 USING :hv_expense INTO :hv_balance;
 Siehe auch

Gespeicherte Prozeduren mit Ergebnismengen