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 - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (P-Z)

 

SET-Anweisung

Mit dieser Anweisung weisen Sie einer SQL-Variablen einen Wert zu.

Syntax
SET Bezeichner = Ausdruck
Bemerkungen

Die SET-Anweisung weist einer Variablen einen neuen Wert zu. Die Variable muss zuvor mit einer CREATE VARIABLE-Anweisung oder einer DECLARE-Anweisung erstellt worden sein, oder ein OUTPUT-Parameter einer Prozedur sein. Die Variable kann optional die Transact-SQL-Konvention eines @-Zeichens vor einem Namen verwenden. Zum Beispiel:

SET @lokale_Variable = 42

Eine Variable kann in einer SQL-Anweisung überall dort verwendet werden, wo ein Spaltenname zugelassen ist. Wenn ein Spaltenname mit demselben Namen wie der der Variablen besteht, wird der Wert der Variablen verwendet.

Variablen gehören lokal zur aktuellen Verbindung und verschwinden, sobald Sie die Verbindung zur Datenbank trennen oder die DROP VARIABLE-Anweisung verwenden. Sie werden von den Anweisungen COMMIT oder ROLLBACK nicht beeinflusst.

Variablen werden für die Erstellung von umfangreichen Text- oder Binärobjekten für die INSERT- oder UPDATE -Anweisungen von Embedded SQL-Programmen benötigt, da Embedded SQL-Hostvariablen auf 32.767 Byte begrenzt sind.

Berechtigungen

Keine.

Nebenwirkungen

Keine.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Persistent Stored Module-Funktion.

Beispiel

Dieses einfache Beispiel zeigt die Erstellung einer Variablen namens 'birthday' und verwendet SET, um das Datum auf CURRENT DATE zu setzen.

CREATE VARIABLE @birthday DATE;
    SET @birthday = CURRENT DATE;

Mit dem folgenden Codefragment wird ein großer Textwert in die Datenbank eingefügt.

EXEC SQL BEGIN DECLARE SECTION;
DECL_VARCHAR( 500 ) buffer;
/* Note: maximum DECL_VARCHAR size is 32765 */
EXEC SQL END DECLARE SECTION;

EXEC SQL CREATE VARIABLE hold_blob LONG VARCHAR;
EXEC SQL SET hold_blob = '';
for(;;) {
   /* read some data into buffer ... */
   size = fread( buffer, 1, 5000, fp );
   if( size <= 0 ) break;
   /* Does not work if data contains null chars */
   EXEC SQL SET hold_blob = hold_blob || :buffer;
}
EXEC SQL INSERT INTO some_table VALUES( 1, hold_blob );
EXEC SQL DROP VARIABLE hold_blob;

Mit dem folgenden Codefragment wird ein großer Binärwert in die Datenbank eingefügt.

EXEC SQL BEGIN DECLARE SECTION;
DECL_BINARY( 5000 ) buffer;
EXEC SQL END DECLARE SECTION;

EXEC SQL CREATE VARIABLE hold_blob LONG BINARY;
EXEC SQL SET hold_blob = '';
for(;;) {
   /* read some data into buffer ... */
   size = fread( &(buffer.array), 1, 5000, fp );
   if( size <= 0 ) break;
   buffer.len = size;
   /* add data to blob using concatenation */
   EXEC SQL SET hold_blob = hold_blob || :buffer;
}
EXEC SQL INSERT INTO some_table VALUES ( 1, hold_blob );
EXEC SQL DROP VARIABLE hold_blob;