Aktuelle Datenbankverbindung und Ausführen von Datenbankprozeduren und -funktionen.

Letzte Änderung :
30.07.2025, 07:35 Uhr

Aktuelle Datenbankverbindung und Ausführen von Datenbankprozeduren und -funktionen. über die aktuelle Datenbankverbindung können auch Transaktionen ausgeführt werden, verwenden sie dazu sql::query und die Klasse query.

Query erfordert #include "internal/types.h"

static DBC sql::dbconnection()

Hole die aktuelle Datenbankverbindung. Die Datenbankverbindung darf niemals über einen Skriptbefehl gelöscht werden.

Name Typ Default Beschreibung
Return DBC   Aktuelle Datenbankverbindung von InDesign® oder 0


priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static DBC sql::connection()

Hole die aktuelle Datenbankverbindung. Die Datenbankverbindung darf niemals über einen Skriptbefehl gelöscht werden. Der Befehl kann synonym für sql::dbconnection verwendet werden.

Name Typ Default Beschreibung
Return DBC   Aktuelle Datenbankverbindung von InDesign® oder 0

Version 1.2 (15. Juni 2005)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static DBC sql::login(
  char* service = 0,
  char* user = 0,
  char* passwd = 0,
  char* dbname = 0,
  char* client = 0)

Stelle eine Datenbankverbindung zu einem Datenbank-Service her. Ist eine der Angaben gleich 0 (nicht ""!!), wird der Logindialog geöffnet. Das Ergebnis sollte auf jeden Fall auf 0 geprüft werden. Der erhaltene Zeiger muss mit sql::logout wieder gelöscht werden.

Name Typ Default Beschreibung
Return DBC   Zeiger auf die Datenankverbindung bei erfolgreicher Verbindung oder 0. Der Zeiger muss mit sql::logout wieder gelöscht werden!
service String oder char* 0 Servicename
user String oder char* 0 Benutzername
passwd String oder char* 0 Passwort
dbname String oder char* 0 Datenbankname
client String oder char* 0 Clientinformationen

Stelle eine Verbindung zum Datenbankservice werk2 her. Es wird automatisch ein Logindialog gezeigt der mit den Werten werk2 und paul als Benutzername vorbelegt ist.

DBC      	dbc 	= sql::login (
 					"werk2",
 					"paul",
 					0,
 					0,
 					0);
:
if (!dbc) ...
:
sql::logout (dbc);

Stelle eine Verbindung zum Datenbankservice werk2 her. Die Verbindung wird ohne Logindialog erstellt.

 
DBC		dbc 	= sql::login (
 				"werk2",
 				"paul",
 				"pauls_passwort",
 				"",
 				"");
:
if (!dbc) ...
:
sql::logout (dbc);

Version 1.2 (15. juni 2005)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

logout

static int sql::logout(DBC dbc)

Trennen der Verbindung zu einem Datenbankservice.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
dbc dbc - Zeiger auf eine mit login erstellte Datenbankverbindung. Der Befehl darf nicht die Datenbankverbindung von InDesign® (sql::connection) lösen!


priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static Query sql::query(DBC dbc)

Erzeuge einen neuen Transaktionsquery. Die InDesign® Datenbankverbindung darf niemals über einen Skriptbefehl gelöscht werden..

Name Typ Default Beschreibung
Return Query   Ein neuer Query zur Behandlung von Datenbanktransaktionen. Ist dbc leer, gibt der Aufruf 0 zurück. Sie sollten den erhaltenen Query in jedem Fall auf 0 testen.
dbc DBC - Gültige Datenbankverbindung, dbc kann auch eine SOAP-Verbindung enthalten. Alle Befehle, die an den Query gestellt werden, werden dann von diesem Service ausgeführt.

Erzeuge einen neuen Transaktionsquery

DBC	dbc	= sql::dbconnection ();
Query qu = sql::query (dbc);
if (!qu) { Fehlermeldung und eventuell Abbruch }


priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

query::send
query::input
query::output
query::exec
query::fetch
comet.CSOAP.createQuery
comet.CSQL.createQuery

static int sql::call(
  DBC dbc,
  char* fname,
  void* ret_val,
  ...)

Mit den Methoden sql::call und sql::calln können Prozeduren und Funktionen (stored procedures) einer Datenbank ausgeführt werden. Dieser Prozess wird im allgemeinen mit remote procedure call (RPC) bezeichnet. RPCs können Ein- und Ausgabeparameter und Rückgabewerte haben. cscript unterstützt die gebräuchlichsten Datentypen für Parameter und Rückgabewerte : ganze Zahlen, reelle Zahlen und Strings.
Werden Strings als Outparameter eines Aufrufes verwendet, sollten dafür mindestens SQL_MAXSTRLEN (=4001) Byte reserviert sein!Bei OCI-Verbindungen kann sql::call nicht verwendet werden. Benutzen Sie stattdessen sql::calln.

[err_code = ] sql::call (
 	dbc, 
 	proc_name,		// Prozedurname
 	return_value | 0	// Rückgabewert oder 0
 	{ 
 	, parameter1
 	, parameter2
 	:
 	, parametern
 	})
Es wird zwischen zwei Methoden unterschieden, die erste, sql::call, benötigt keine Beschreibung der Rückgabewerte und Parameter. Sie ist einfacher zu programmieren aber, weil sie diese Informationen zuerst von der Datenbank erfragen muss, deutlich langsamer.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
1 Keine Datenbankverbindung
2 Prozedur oder Funktion nicht gefunden
3 Prozedurparameter können nicht ermittelt werden
4 Returnwert einer Funktion nicht angegeben
5 Fehler beim Ausführen des RPC
6 wrong type, must be kInt | kFloat | kString
7 wrong column type, must be kIn | kOut | kInout
-41 Kein Arbeitsspeicher mehr
dbc DBC - aktuelle Datenbankverbindung
fname String oder char* - Name einer Datenbankfunktion oder -prozedur
ret_value Adresse - Zeiger auf eine Rückgabevariable bei Funktionen oder 0 bei Prozeduren. Es ist Aufgabe des Skriptprogrammierers, den richtigen Datentyp zu wählen.
[parameter] Wert oder Adresse - Eingabeparameter : Wert oder Adresse
Ein- und Ausgabeparameter : Adresse
Ausgabeparameter : Adresse

siehe sql::calln



priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static int sql::calln(
  DBC dbc,
  char* fname,
  void* ret_val,
  int ret_type,
  int param_count,
  ...)

Ausführen einer Datenbankfunktion oder -prozedur. Dieser Prozess wird im allgemeinen mit remote procedure call (RPC) bezeichnet. RPCs können Ein- und Ausgabeparameter und Rückgabewerte haben. cscript unterstützt die gebräuchlichsten Datentypen für Parameter und Rückgabewerte : ganze Zahlen, reelle Zahlen und Strings.
Werden Strings als Outparameter eines Aufrufes verwendet, sollten dafür mindestens SQL_MAXSTRLEN (=4001) Byte reserviert sein!

[err_code = ] sql::calln (
 	dbc, 
 	proc_name, ret|0, type,
 	counter, // Anzahl der Parameter
 	[
 		, val, inout, type	// 1.Parameter
 		, val, inout, type	// 2.Parameter
 		:
 	])

Es wird zwischen zwei Methoden unterschieden. In sql::calln wird eine Beschreibung der Parameter und des Rückgabewertes erwartet. Der Schreibaufwand führt zu einer wesentlich schnelleren Ausführung der Funktion als der der vergleichbaren Funktion sql::call, die Parameter- und Rückgabetypen erst über die Datenbank ermitteln muss.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
1 Keine Datenbankverbindung
2 Prozedur oder Funktion nicht gefunden
3 Prozedurparameter können nicht ermittelt werden
4 Returnwert einer Funktion nicht angegeben
5 Fehler beim Ausführen des RPC
6 wrong type, must be kInt | kFloat | kString
7 wrong column type, must be kIn | kOut | kInout
-41 Kein Arbeitsspeicher mehr
dbc DBC - aktuelle Datenbankverbindung
fname String oder char* - Name einer Datenbankfunktion oder -prozedur
ret_val Addresse - Zeiger auf eine Rückgabevariable bei Funktionen oder 0 bei Prozeduren
ret_type int - Zum Rückgabewert der Funktion passende Typangabe (kInt, kFloat , kString) oder kIgnore bei Prozeduren.
param_count int - Anzahl der Parameter der Datenbankfunktion oder -prozedur. param_count Triples der folgenden Parameter müssen folgen.
param_value Wert oder Adresse - param_inout == kIn Wert oder Adresse
param_inout == kInout oder kOut Adresse
param_inout int - Ist der Parameter ein Ein- und/oder Ausgabeparameter? Wählen sie eine der folgenden Angaben kIn, kInout, kOut. Es ist Aufgabe des Skriptprogrammierers, den richtigen Parametertyp zu wählen. kInout darf bei OCI-Verbindungen nicht verwendet werden!
param_type int - Welchen Datentyp haben Wert und Parameter. Wählen sie einen der folgenden Datentypen kString, kFloat ,kString. Es ist Aufgabe des Skriptprogrammierers, den richtigen Datentyp zu wählen.
:     Weitere Tripel gemäß param_count

Folgende Testtabelle sei definiert :

create table PP1_Table (
 	number(10) not null,
 	varchar2(255),
 	number(10,2));

Und folgende Funktion sei definiert :

create or replace function PP1_Function_Str (
 	id number,
 	i out number,
 	str in out varchar2,
 	f out number)  RETURN VARCHAR2 AUTHID CURRENT_USER
is
begin
 	i := id;
 	str :=  str || ' : ' || to_char (i)||' - inserted' ;
 	f := i/2.0;
 	insert into PP1_Table values (id, str,f);
 	commit;
 	return str;
end PP1_Procedure;
/

Das folgende Skript sollte zwei Meldungen schreiben :

    a=10, b='Hihi ... : 10 - inserted', c=5.0000
    a=10, b='Hihi ... : 11 - inserted', c=5.5000


überprüfen Sie auch den Inhalt der Tabelle PP1_Table, hier sollten zwei Einträge hinzugekommen sein.

#include "internal/types.h"
 
int main ()
 {
     	char	*	name	= "PP1_Function_str";
     	char	s[SQL_MAXSTRLEN];
     	int		a;
     	char	b[SQL_MAXSTRLEN];
     	float	c;
     	int		err;
     
     	strcpy (b, "Yeah, es klappt, das war InDesign");
     
     	err = sql::call (
     			sql::dbconnection (),	"c-comment">// current connection
     			name,			"c-comment">// function
     			s,			"c-comment">// return value
     			10, &a, b, &c);
     
     	if (err != 0)
     		showerror ("Fehler %d bei sql::call '%s'", err, name);
     	else
     		showmessage ("a=%d, b='%s', c=%f", a, b, c);
     
     	err = sql::calln (
     			sql::dbconnection (),	"c-comment">// current connection
     			name, s, kString,	"c-comment">// return value
     			4,			"c-comment">// Anzahl der Parameter
     			11, 	kIn, 	kInt,
     			&a, 	kOut, 	kInt,
     			b,	kInout, kString,
     			&c, 	kOut, 	kFloat);
     
     	if (err != 0)
     		showerror ("Fehler %d bei sql::call '%s'", err, name);
     	else
     		showmessage ("a=%d, b='%s', c=%f", a, b, c);
     
     	return 0;
}


priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

dbconnection
calln
dbconnection
call

static char* sql::server(DBC dbc, char* str)

Ermittle den Servernamen einer Datenbankverbindung.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter str)   Name des Servers, den die angegebene Datenbankverbindung verwendet. Der Rückgabewert ist identisch mit dem Aufrufparameter str.
dbc DBC - Datenbankverbindung
str String oder char* - Reservierter Speicher für den Servernamen. Bei Verwendung von char* sollte der Speicher mindestens 256 Byte groß sein.
char		s[256];
showmessage ("%s", sql::server (sql::dbconnection (), s));

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CSQL.getServer

static char* sql::user(DBC dbc, char* str)

Ermittle den Benutzernamen, mit dem eine Datenbankverbindung hergestellt wurde.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter str)   Benutzername für die angegebene Datenbankverbindung. Der Rückgabewert ist identisch mit dem Aufrufparameter str.
dbc DBC - Datenbankverbindung
str String oder char* - Reservierter Speicher für den Benutzernamen. Bei Verwendung von char* sollte der Speicher mindestens 256 Byte groß sein.
char		s[256];
showmessage ("%s", sql::user (sql::dbconnection (), s));

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CSQL.getUser

static int sql::userid(DBC dbc)

Ermittle die eindeutige iQuest Comet BenutzerID der Datenbankverbindung.

Name Typ Default Beschreibung
Return int   BenutzerID oder 0
dbc DBC - Datenbankverbindung
showmessage ("%d", sql::userid (sql::dbconnection ()));

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CSQL.getUser

static char* sql::dbname(DBC dbc, char* str)

Ermittle den Namen der Datenbank zu der eine Verbindung hergestellt wurde.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter str)   Datenbankname/Schema für die angegebene Datenbankverbindung. Der Rückgabewert ist identisch mit dem Aufrufparameter str.
dbc DBC - Datenbankverbindung
str String oder char* - Reservierter Speicher für den Servernamen. Bei Verwendung von char* sollte der Speicher mindestens 256 Byte groß sein.
char		s[256];
showmessage ("%s", sql::dbname (sql::dbconnection (), s));

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CSQL.getDBName

static char* sql::client(DBC dbc, char* str)

Ermittle den Mandanten, der beim Einloggen in der Datenbank angegeben wurde.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter str)   Mandant für die angegebene Datenbankverbindung. Der Rückgabewert ist identisch mit dem Aufrufparameter str.
dbc DBC - Datenbankverbindung
str String oder char* - Reservierter Speicher für den Mandatennamen. Bei Verwendung von char* sollte der Speicher mindestens 256 Byte groß sein.
char		s[256];
showmessage ("%s", sql::client (sql::dbconnection (), s));

Version 1.1.9, 14. März 2005

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CSQL.getClient

static int sql::charset(DBC dbc)

Zeichensatz der Datenverbindung.

Name Typ Default Beschreibung
Return int   -1 : Fehler
0 : Systemzeichensatz
1 : UTF-8
2 : Unicode 16 Bit
3 : Unicode 32 Bit
dbc DBC - Datenbankverbindung

v4.0.5 R14333, 4. Jan. 2017

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CSQL.getCharset

Seit
Plugin Version 1.0.3
Letzte Änderung
30.07.2025, 07:35 Uhr
Autor
Paul Seidel
Siehe auch
query::close

Alphabetic index HTML hierarchy of classes or Java