Announcement

Collapse
No announcement yet.

Nur ein Datensatz erlaubt

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

  • Nur ein Datensatz erlaubt

    Ich lese in eine SQL2008 Tabelle mit xp_dirtree Dateinamen ein.

    Nun darf in sich dem Verzeichnis aber nur eine Datei befinden, da aber Menschen manuell kopieren, befinden sich häufig mehrere unterschieldiche Dateien in dem Quellenverzeichnis.

    Code:
    --	SQL-Anweisung erstellen
    
    		    SET @SQLString = 'INSERT INTO TempDateiSuche  ' + 
    		    'EXEC master..xp_dirtree ''' + @PfadAktuell + ''', 1, 1' 
                         EXEC(@SQLString)
            
          -- FEHLERABFRAGE auf mehr als ein DS - TODO
    Wie kann man nun die Tabelle auf das Vorhandensein von mehr als einem DS abfragen; und zwar so, dass nur im Falle vom Vorhanden eines einzigen DS Datensatzes weiter ausgeführt wird, bzw. im anderen Fall ein Hinweis ausgegeben wird?

    Ich verzeweifele noch an der Onlinehilfe....

    Gruß

  • #2
    [HIGHLIGHT="SQL"]
    DECLARE @RowCount INT;
    ...
    EXEC ('@SQLString')
    SET @RowCount = @@ROWCOUNT;
    IF @RowCount > 1
    RAISERROR ('Zuviele Datensätze', 16, 1) WITH NOWAIT;[/HIGHLIGHT]

    Comment


    • #3
      Super - das gelingt schon einmal gut. Nun läuft das bei mir in einer gespeicherten Prozedur. Diese Prozedur wird von extern aufgerufen. Nun möchte ich, dass bei diesem "Fehler" der Rest der gespeicherten Prozedur angebrochen wird und ggf. ein Fehler Parameter zurück gesandt werden kann...

      Comment


      • #4
        über den RETURN-wert der Proc
        [HIGHLIGHT="SQL"]CREATE PROC Test AS
        BEGIN;
        DECLARE @RowCount INT;
        ...
        EXEC ('@SQLString')
        SET @RowCount = @@ROWCOUNT;
        IF @RowCount > 1
        RETURN 50000
        ....
        RETURN 0;
        END;

        -- Aufruf
        DECLARE @Result INT;
        EXEC @Result = Test;
        SELECT CASE WHEN @Result = 0 THEN 'OK'
        WHEN @Result = 50000 THEN 'Zuviele Datensätze bei Ausführuing von TEST'
        END;
        [/HIGHLIGHT]

        Comment

        Working...
        X