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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere Embedded SQL » Hostvariable verwenden

 

Hostvariable verwenden

Hostvariable können unter folgenden Umständen benutzt werden:

  • In SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen sind sie überall dort erlaubt, wo eine Zahlen- oder Zeichenfolgenkonstante erlaubt ist.

  • In der INTO-Klausel einer SELECT oder FETCH-Anweisung.

  • Hostvariable können in Embedded SQL-Anweisungen auch anstelle eines Anweisungsnamens, eines Cursornamens oder eines Optionsnamens benutzt werden.

  • Im Fall von CONNECT-, DISCONNECT- und SET CONNECT-Anweisungen kann eine Hostvariable anstelle eines Servernamens, eines Datenbanknamens, eines Verbindungsnamens, einer Benutzer-ID, eines Kennworts oder einer Verbindungszeichenfolge verwendet werden.

  • Im Fall von SET OPTION und GET OPTION kann eine Hostvariable benutzt werden anstelle einer Benutzer-ID, eines Optionsnamens oder eines Optionswerts.

  • Hostvariable können nicht anstelle eines Tabellennamens oder eines Spaltennamens in einer Anweisung benutzt werden.

Hostvariable SQLCODE und SQLSTATE

Der ISO/ANSI-Standard gestattet es einer Embedded SQL-Quelldatei, die folgenden speziellen Hostvariablen innerhalb eines Deklarationsabschnitts zu deklarieren:

long SQLCODE;
char SQLSTATE[6];

Diese Variablen werden ggf. nach einer Embedded SQL-Anweisung gesetzt, die eine Datenbankanforderung enthält (EXEC SQL-Anweisungen, außer DECLARE SECTION, INCLUDE, WHENEVER SQLCODE usw.).

Die Hostvariablen SQLCODE und SQLSTATE müssen im Bereich aller Embedded SQL-Anweisungen sichtbar sein, die Datenbankanforderungen generieren.

Weitere Hinweise finden Sie in der Beschreibung der Option sqlpp -k unter SQL-Präprozessor.

Folgendes ist gültiges Embedded SQL:

EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
long SQLCODE;
EXEC SQL END DECLARE SECTION;
sub1() {
 EXEC SQL BEGIN DECLARE SECTION;
 char SQLSTATE[6];
 EXEC SQL END DECLARE SECTION;
 exec SQL CREATE TABLE ...
}

Folgendes ist nicht gültiges Embedded SQL:

EXEC SQL INCLUDE SQLCA;
sub1() {
 EXEC SQL BEGIN DECLARE SECTION;
 char SQLSTATE[6];
 EXEC SQL END DECLARE SECTION;
 exec SQL CREATE TABLE...
}
sub2() {
 exec SQL DROP TABLE...
 // No SQLSTATE in scope of this statement
}