Announcement

Collapse
No announcement yet.

Wert NULL in Stored Procedures

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

  • Wert NULL in Stored Procedures

    Hallo!

    Ich möchte in einem Stored Procedure nach dem Wert NULL abfragen ... sieht so aus:

    select @var=(select id from dbo.tabelle where id=@wert)

    Angenommen, die Abfrage liefert keinen Wert zurück, möcht ich folgendermaßen ein Error-Handling einleiten:

    if @var = NULL

    Dieses ignoriert er mir aber :-(.

    Muß ich bestimmte Einstellungen vornehmen, damit er das akzeptiert?

    Danke!

  • #2
    Hallo,

    das geschilderte Problem hat damit zu tun, dass NULL <b>kein</b> Wert ist, sondern ein Zustand. Daher ist der <b>=</b>-Vergleich nicht zulässig, statt dessen sieht der SQL-Standard die Abfragefunktion <b>IS NULL</b> vor. Das folgende Beispiel demonstriert dies:
    <pre>
    USE tempdb
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> SPNullDemo
    (
    RecID <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    Wert <b>VARCHAR</b>(9)
    )
    <b>GO</b>
    <br>
    <b>INSERT</b> <b>INTO</b> SPNullDemo (Wert) <b>VALUES</b> (<font color="#9933CC">'Test'</font>)
    <b>INSERT</b> <b>INTO</b> SPNullDemo (Wert) <b>VALUES</b> (<b>NULL</b>)
    <b>GO</b>
    <br>
    <b>SELECT</b> * <b>FROM</b> SPNullDemo
    <br>
    <b>CREATE</b> <b>PROCEDURE</b> CheckNull
    (
    @RecID <b>INTEGER</b>
    )
    <b>AS</b>
    <b>DECLARE</b> @Wert <b>AS</b> <b>VARCHAR</b>(9)
    <b>SELECT</b> @Wert = Wert <b>FROM</b> SPNullDemo <b>WHERE</b> RecID = @RecID
    <b>IF</b> @Wert <b>IS</b> <b>NULL</b>
    PRINT <font color="#9933CC">'NULL'</font>
    <b>ELSE</b>
    PRINT <font color="#9933CC">'Nicht NULL'</font>
    <b>GO</b>
    <br>
    -- SP testen
    <b>EXEC</b> CheckNull 1
    <b>EXEC</b> CheckNull 2
    </pre&gt

    Comment


    • #3
      Hoppala ... böööse *schäm*! Hab ich überlesen.

      Danke

      Comment

      Working...
      X