Announcement

Collapse
No announcement yet.

Stored Proc und Domänen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stored Proc und Domänen

    <font size="1" face="Verdana">Hallo Herr Kosch,<br>
    ich arbeite gerade Ihr Buch &quot;Interbase Datenbankentwicklung
    mit Delphi&quot;<br>
    durch. Jetzt bin auf Seite 231 angekommen. Dort geht um Stored
    Procedures.<br>
    Nun möchte ich über eine Stored Procedure einen Datensatz
    hinzufügen.<br>
    Wie auf den vorherigen Seiten gelernt habe, ist es vorteilhaft,<br>
    wenn sich für die Tabellenspalte eine entsprechende DOMAIN
    anlegt.<br>
    Siehe Metadaten. Jetzt möchte diese Domänen als Parametertyp in
    einer<br>
    Stored Procedure verwenden. Leider weigert sich der Interbase 6
    dies zu akzeptieren.<br>
    Ist das normal, oder mache ich etwas falsch ?</font></p>

    <p><font size="1" face="Verdana">CREATE PROCEDURE INSERT_KUNDEN
    (V TVORNAME, N TNACHNAME) AS<br>
    BEGIN<br>
    INSERT INTO KUNDEN VALUES(GEN_ID(GENERATORTEST_GEN,1),:V,:N);<br>
    END<br>
    ^</font></p>

    <p><font size="1" face="Verdana"><strong>Metadaten -&gt;</strong></font></p>

    <p><font size="1" face="Verdana">SET SQL DIALECT 3;<br>
    <br>
    /* CREATE DATABASE 'd:\interbase\test.gdb' PAGE_SIZE 4096<br>
    <br>
    DEFAULT CHARACTER SET ISO8859_1 */<br>
    /* Domain definitions */<br>
    CREATE DOMAIN &quot;TBOOLEAN&quot; AS CHAR(1) CHARACTER SET
    ISO8859_1<br>
    CHECK(VALUE IN ('J','N')) NOT NULL;<br>
    CREATE DOMAIN &quot;TID&quot; AS INTEGER NOT NULL;<br>
    CREATE DOMAIN &quot;TNACHNAME&quot; AS VARCHAR(30) CHARACTER SET
    ISO8859_1 NOT NULL;<br>
    CREATE DOMAIN &quot;TVORNAME&quot; AS VARCHAR(30) CHARACTER SET
    ISO8859_1 NOT NULL;</font></p>

    <p><font size="1" face="Verdana">/* Table: KUNDEN, Owner: SYSDBA
    */<br>
    <br>
    CREATE TABLE &quot;KUNDEN&quot; <br>
    (<br>
    &quot;ID&quot; &quot;TID&quot;,<br>
    &quot;VORNAME&quot; &quot;TVORNAME&quot;,<br>
    &quot;NACHNAME&quot; &quot;TNACHNAME&quot;,<br>
    PRIMARY KEY (&quot;ID&quot<br>
    );</font></p>

    <p><font size="1" face="Verdana">CREATE GENERATOR
    &quot;GENERATORTEST_GEN&quot;;</font></p>

    <p><font size="1" face="Verdana"><strong>&lt;-Metadaten</strong></font></p>

    <p><font size="1" face="Verdana"></font>&nbsp;</p>

    <p><font size="1" face="Verdana">:-) Jens Schumann</font>

  • #2
    Hallo,

    die DOMAINs sind Templates für das Erzeugen von Tabellen. Man darf eine DOMAIN ändern, worauf sich auch alle darauf beziehenden Tabellen in ihrer Struktur ändern. Eine Stored Procedure wird jedoch beim Erzeugen in bereits compilierter Form in der Datenbank abgelegt - daher sind hier DOMAINs als Datentypen nicht erlaubt (siehe <i>DataDef.pdf</i> Seite 139/140: "<i>datatype: Any InterBase datatype</i>")

    Comment

    Working...
    X