Announcement

Collapse
No announcement yet.

Stored Proc: Case WHEN ... warum geht der Insert nicht?

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

  • Stored Proc: Case WHEN ... warum geht der Insert nicht?

    Hallo zusammen,

    ich schlage mich seit gestern mit einem Problem in meiner Stored Procedure rum.
    Ich benutze dort ein Case When und in einem Fall läuft dies auf einen Insert heraus.
    Die Varieablen bestehen aus varchars und ints.
    Ich bekomme "glücklicherweise" auch keine Fehlermeldung und der PRINT am Ende der Case zeigt kein Ergebnis.
    Jemand eine Idee was ich falsch mache?

    Die Values werden von einer Webanwendung übergeben (klappt auch soweit)
    Das Löschen von Datensätzen ( 3: Delete ) klappt auch, nur Insert und Update machen Probleme.

    Code:
    ...
    /*______________
      INPUT VALUES
      
      @BUTTON:	
    			1:	insert
    			2:	update	
    			3:	delete
    In der Tabelle:
    ID = int
    PRIMA = int
    SEKUN = int 
     ________________*/	
    	@BUTTON	 VARCHAR(2)  ='',
    	@ID  VARCHAR(20)  ='',         
    	@EENUMMER  VARCHAR(50)  ='',
    	@EELANG	 VARCHAR(150)  ='',
    	@EEKURZ	 VARCHAR(50)  ='',
    	@PRIMA  VARCHAR(10)  ='',
    	@SEKUN  VARCHAR(40)  ='',
    	@DATASET_TYP  VARCHAR(10)	 ='',
    	
    	-- Alter Datensatz welcher bearbeitet wird
    	@ID_OLD	 VARCHAR(20)  ='',       
    	@EENUMMER_OLD  VARCHAR(50)  ='',
    	@EELANG_OLD	  VARCHAR(150)  ='',
    	@EEKURZ_OLD	  VARCHAR(50)  ='',
    	@PRIMA_OLD  VARCHAR(10)  ='',
    	@SEKUN_OLD	VARCHAR(40)  ='',
    	@DATASET_TYP_OLD  VARCHAR(10)	  ='',			
    	
    	@EXECUTE_BUILDER  VARCHAR(2000)  =''
    AS
    BEGIN
    SET @EXECUTE_BUILDER =
    CASE @BUTTON			
    /*_______
      1: Insert
      ________*/	
    WHEN '1' THEN 'INSERT INTO [...Table...](ID,EENummer,EELang,EEKurz,Prima,Sekun,DatasetTyp) ' + 			
    	'VALUES('+(@ID + ',''' 
    	+ @EENUMMER	+ ''',''' 
    	+ @EELANG + ''',''' 
    	+ @EEKURZ + ''',' 
    	+ @PRIMA + ','''
    	+ @SEKUN + ',''' 
    	+ @DATASET_TYP + ''
    	)+')'
    /*_________
      2: Update  = geht nicht
      _________*/	
    WHEN '2' THEN  'UPDATE	[...Table...]
    	SET ID= ' + @ID +',
    		EENummer= ''' + @EENUMMER +''', 
    		EELang= ''' + @EELANG +''', 
    		EEKurz= ''' + @EEKURZ +''', 
    		Prima= ' + @PRIMA +', 
    		Sekun= ' + @SEKUN+', 
    		DatasetTyp= ''' + @DATASET_TYP +'''
    	WHERE
    		ID= ' + @ID_OLD +' AND
    		EENummer= ''' + @EENUMMER_OLD +''' AND
    		EELang= ''' + @EELANG_OLD +''' AND 
    		EEKurz= ''' + @EEKURZ_OLD +''' AND 
    		Prima= ' + @PRIMA_OLD +' AND 
    		Sekun= ' + @SEKUN_OLD +' AND 
    		DatasetTyp= ''' + @DATASET_TYP_OLD +''
    /*________
      3: Delete = funktioniert
      ________*/	
    WHEN '3' THEN  'DELETE FROM	[...TABLE...]
    		WHERE
    			ID= ' + @ID +' AND 
    			EENummer= ' + @EENUMMER 
    END;	
    PRINT @EXECUTE_BUILDER;	
    EXEC (@EXECUTE_BUILDER);
    END
    Danke schonmal vorweg =)

    Gruß
    F60.2

  • #2
    Hallo,

    das Delete ist das einzige Statement in dem keine einfachen Hochkomma ' vorkommen. Vlt. ist einfach die Maskierung falsch!?

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Und wenn du ein DELETE machst, dann zeigt print @EXECUTE_BUILDER schon den richtigen Inhalt, oder? Da solltest du dann mal den Wert von @BUTTON anschauen, ob der wirklich als '1' bzw. '2' für insert/Delete richtig rüberkommt.
      Was mir dann noch so einfallen würde, was aber unwahrscheinlich ist, weil du ja keine Fehlermeldung kriegst: die Länge mit 2000 Zeichen für @EXECUTE_BUILDER ist zu klein, aber das könnte mal schnell checken, wenn man zB. mal nur ein einziges Feld beim Insert angibt, dann sollte zumindest beim print @EXECUTE_BUILDER etwas zu sehen sein.

      bye,
      helmut

      Comment


      • #4
        hi,
        Danke schonmal für die Antworten.
        das Delete ist das einzige Statement in dem keine einfachen Hochkomma ' vorkommen. Vlt. ist einfach die Maskierung falsch!?
        das ist z.B. ein Problem, denn insert will einen varchar mit den Hochkomma aber bei int und NULL nicht
        Code:
        WHEN '1' THEN 'INSERT INTO [...Table...](ID,EENummer,EELang,EEKurz,Prima,Sekun,DatasetTyp) ' + 			
        	'VALUES'(@ID + ','
        	+ @EENUMMER	+ ','
        	+ @EELANG + ',' 
        	+ @EEKURZ + ',' 
        	+ @PRIMA + ','
        	+ @SEKUN + ','
        	+ @DATASET_TYP +')'
        bringt leider auch keine Fehlermeldung
        als idee hätte ich sowas (geht aber leider auch nicht )
        Code:
        WHEN '1' THEN 
        'if (@EELANG != null)BEGIN
        	SET @EELANG = '' + @EELANG + ''
        	END
         if (@EEKURZ != null)BEGIN
        	SET @EEKURZ = '' + @EEKURZ + ''
        	END 
        ' +
        ' INSERT INTO [...Table...](ID,EENummer,EELang,EEKurz,Prima,Sekun,DatasetTyp) ' + 			
        	'VALUES'(@ID + ','''
        	+ @EENUMMER	+ ''','
        	+ @EELANG + ',' 
        	+ @EEKURZ + ',' 
        	+ @PRIMA + ','
        	+ @SEKUN + ','''
        	+ @DATASET_TYP + ''')'
        ID, EENUMMER und DASET_TYP müssen eh vorhanden sein,
        sonst startet der den insert-Fall gar nicht und ints sowie NULL
        werden ohne Hochkomma angegeben


        Und wenn du ein DELETE machst, dann zeigt print @EXECUTE_BUILDER schon den richtigen Inhalt, oder?
        Da solltest du dann mal den Wert von @BUTTON anschauen, ob der wirklich als '1' bzw. '2' für insert/Delete richtig rüberkommt.
        Wird richtig übergeben, alles schon getestet

        die Länge mit 2000 Zeichen für @EXECUTE_BUILDER ist zu klein
        gutes Argument, habs gleich geändert, brachte aber auch keinen Erfolg

        Comment


        • #5
          Und warum muss es eigentlich dynamisches SQL sein das dann per Exec ausgeführt wird? Es geht doch auch "direkt":

          [highlight=sql]
          CASE @BUTTON
          /*_______
          1: Insert
          ________*/
          WHEN '1' THEN
          INSERT INTO [...Table...](ID,EENummer,EELang,EEKurz,Prima,Sekun,DatasetTyp)
          VALUES(@ID,@EENUMMER,@EELANG,@EEKURZ,@PRIMA,@SEKUN ,DATASET_TYP)

          /*_________
          2: Update = geht nicht
          _________*/

          WHEN '2' THEN
          UPDATE [...Table...]
          SET ID= @ID, EENummer=@EENUMMER,EELang=@EELANG,EEKurz=@EEKURZ,
          Prima=@PRIMA,Sekun=@SEKUN,DatasetTyp=@DATASET_TYP
          WHERE ID=@ID_OLD AND EENummer= @EENUMMER_OLD
          AND EELang=@EELANG_OLD AND EEKurz=@EEKURZ_OLD AND
          Prima= @PRIMA_OLD AND Sekun= @SEKUN_OLD AND
          DatasetTyp= @DATASET_TYP_OLD

          ---usw

          [/highlight]


          P.S. Warum selektiert die Delete - Anweisung nur auf 2 Felder, die Update aber auf alles? Gibt's keinen Primärschlüssel?

          Grüße
          Tino
          Ich habs gleich!
          ... sagte der Programmierer.

          Comment


          • #6
            Und warum muss es eigentlich dynamisches SQL sein das dann per Exec ausgeführt wird?
            Es geht doch auch "direkt"
            Das war es auch, womit ich es das erste mal versucht hatte,
            aber im Stored Procedure verträgt der das scheinbar nicht.
            Wenn es doch geht, lasse ich mich liebend gerne Berichtigen, würde mir einiges erleichtern

            Warum selektiert die Delete - Anweisung nur auf 2 Felder,
            die Update aber auf alles? Gibt's keinen Primärschlüssel?
            Ich kannte es halt nicht anders, aber stimmt schon, hast recht, da könnte man sich da könnte das ein oder andere raus,
            aber erstmal muss es funktionieren ^^ dann mach ich mir über sowas gedanken. eines nach dem anderen.

            Comment


            • #7
              Originally posted by F60.2 View Post
              Das war es auch, womit ich es das erste mal versucht hatte,
              aber im Stored Procedure verträgt der das scheinbar nicht.
              Wenn es doch geht, lasse ich mich liebend gerne Berichtigen, würde mir einiges erleichtern
              Wie äußert es sich denn, wenn der SQL Server etwas nicht 'verträgt'?

              (da fällt mir ein, wir haben heute abend Weihnachtsfeier )

              Grüße
              Tino
              Ich habs gleich!
              ... sagte der Programmierer.

              Comment


              • #8
                Originally posted by tinof View Post
                Wie äußert es sich denn, wenn der SQL Server etwas nicht 'verträgt'?

                (da fällt mir ein, wir haben heute abend Weihnachtsfeier )

                Grüße
                Tino
                Er schmeißt Errors ^^
                im Case-Fall ist es ein Syntax Error.
                Ein Kollege bei der Arbeit war sich nicht 100% sicher aber im Stored Procedure wird wohl ein
                Case wie ich ihn verwenden möchte nur über EXEC zu starten sein
                hat mich wie Sau geärgert, deswegen hoffe ich, dass dies von jemandem widerlegt wird ^^

                (nette Sache ^^)

                Comment


                • #9
                  Als bei uns geht das, hier ein -off topic- Beispiel aus einem laufenden Projekt, das der MSSQL Server 2005 verträgt .

                  Zwar mit IF .. ELSE aber CASE .. WHEN geht sicher genau so.


                  [highlight=sql]

                  ALTER PROCEDURE [dbo].[insertGemarkung]
                  @gemarkung nvarchar(50) = 0,
                  @flur int = 0,
                  @suchNr nvarchar(10),
                  @flaeche float, -- Kataster
                  @flurstuecksNr nvarchar(20),
                  @bemerkungen ntext
                  AS
                  DECLARE @gemarkungid int
                  DECLARE @flurid int
                  DECLARE @flurstueckid int

                  IF @gemarkung is not null and @flur is not null BEGIN

                  -- Gemarkung und Flur eintragen
                  SELECT @gemarkungid = Gemarkung.Gemarkung_ID FROM Gemarkung WHERE Bezeichnung Like @gemarkung
                  IF (@gemarkungid is null) BEGIN -- Existiert noch nicht, also anlegen
                  INSERT INTO Gemarkung(Bezeichnung) VALUES (@gemarkung)

                  -- Flur für diese Gemarkung
                  SELECT @gemarkungid = Gemarkung.Gemarkung_ID FROM Gemarkung WHERE Bezeichnung Like @gemarkung
                  INSERT INTO Flur(Bezeichnung, Gemarkung_ID) VALUES (@flur, @gemarkungid)
                  SELECT @flurid = @@IDENTITY
                  END ELSE BEGIN
                  -- Prüfen, ob es den Flur schon gibt
                  SELECT @flurid = Flur.Flur_ID FROM Flur WHERE (Bezeichnung Like @flur) AND (Gemarkung_ID = @gemarkungid)
                  IF (@flurid is null) BEGIN
                  INSERT INTO Flur(Bezeichnung, Gemarkung_ID) VALUES (@flur, @gemarkungid)
                  SELECT @flurid = @@IDENTITY
                  END
                  END

                  -- Flurstücke eintragen
                  SELECT @flurstueckid = Flurstueck.Flurstueck_ID FROM Flurstueck WHERE SuchNr Like @suchNr -- Gibt es dieses Flurstück schon in der Datenbank?
                  IF (@flurstueckid is null) BEGIN -- Existiert noch nicht, also anlegen
                  INSERT INTO Flurstueck (Flur_ID, SuchNr, Flaeche, Bemerkungen, FlurstuecksNr) VALUES (@flurid, @suchNr, @flaeche, @bemerkungen, @flurstuecksNr)
                  END
                  END
                  [/highlight]
                  Ich habs gleich!
                  ... sagte der Programmierer.

                  Comment


                  • #10
                    Originally posted by tinof View Post
                    Als bei uns geht das, hier ein -off topic- Beispiel aus einem laufenden Projekt, das der MSSQL Server 2005 verträgt .

                    Zwar mit IF .. ELSE aber CASE .. WHEN geht sicher genau so.
                    cool, genau so sah auch mein erster Versuch aus, bevor mein Ausbilder meinte das IF/Else die Performance verschlechtert.
                    Nur deswegen versuche ich Case zu verwenden ^^

                    Leider plagt mich das Gefühl, dass dies nicht der Fall ist
                    Hab schon etwa 50 Tutorials durch und immer noch nichts

                    Comment


                    • #11
                      Originally posted by F60.2 View Post
                      Er schmeißt Errors ^^
                      im Case-Fall ist es ein Syntax Error.
                      Ein Kollege bei der Arbeit war sich nicht 100% sicher aber im Stored Procedure wird wohl ein
                      Case wie ich ihn verwenden möchte nur über EXEC zu starten sein
                      hat mich wie Sau geärgert, deswegen hoffe ich, dass dies von jemandem widerlegt wird ^^

                      (nette Sache ^^)
                      Nun ja, Die CASE Funktion wertet mehere Bedingugnen aus und gibt für jede Bedingung einen Wert zurück .
                      Das passt nicht so zu einem INSERT .... und UPDATE

                      Man sollte daher IF ELSE benutzen...

                      PS: und wenn man schon Dynamic SQL mit SQL-Server macht, sollte man sich mal sp_ExecuteSQL anschauen, da kann man auch Parameter übergeben.

                      Comment


                      • #12
                        Warum teilst du das Problem nicht in Einzelschritte? Der erste Teil wäre es zu ermitteln, warum das print-Statement nichts anzeigt. Also ganz einfach mal in der Art:
                        ...
                        SET @EXECUTE_BUILDER =
                        CASE @BUTTON
                        WHEN '1' THEN 'INSERT'
                        WHEN '2' THEN 'UPDATE'
                        WHEN '3' THEN 'DELETE'
                        ELSE 'Button = ' + IsNull(@BUTTON, 'leer')
                        END;
                        PRINT @EXECUTE_BUILDER;

                        Und erst wenn das passt, dann kann man sich im zweiten Schritt um das Statement kümmern, falls das EXEC nicht wie gewünscht arbeitet. Das macht man am besten, indem man das per print ausgegebene Statement in ein neues Abfragefenster kopiert und dort direkt ohne dem EXEC ausführt.

                        bye,
                        Helmut

                        Comment


                        • #13
                          hi

                          deine erste sp hat noch hochkommafehler. das erste was ich bei dynamischen SQLs als Fehlersuche mache ist zu PRINTEN und das ist bei der länge deiner SQL noch möglich ;-)


                          Code:
                          create PROCEDURE dbo.test
                           
                          
                           
                          	@BUTTON	 VARCHAR(2)  ='',
                          	@ID  VARCHAR(20)  ='',         
                          	@EENUMMER  VARCHAR(50)  ='',
                          	@EELANG	 VARCHAR(150)  ='',
                          	@EEKURZ	 VARCHAR(50)  ='',
                          	@PRIMA  VARCHAR(10)  ='',
                          	@SEKUN  VARCHAR(40)  ='',
                          	@DATASET_TYP  VARCHAR(10)	 ='',
                          	
                          	-- Alter Datensatz welcher bearbeitet wird
                          	@ID_OLD	 VARCHAR(20)  ='',       
                          	@EENUMMER_OLD  VARCHAR(50)  ='',
                          	@EELANG_OLD	  VARCHAR(150)  ='',
                          	@EEKURZ_OLD	  VARCHAR(50)  ='',
                          	@PRIMA_OLD  VARCHAR(10)  ='',
                          	@SEKUN_OLD	VARCHAR(40)  ='',
                          	@DATASET_TYP_OLD  VARCHAR(10)	  ='',			
                          	
                          	@EXECUTE_BUILDER  VARCHAR(2000)  =''
                          AS
                          BEGIN
                          SET @EXECUTE_BUILDER =
                          CASE @BUTTON			
                          /*_______
                            1: Insert
                            ________*/	
                          WHEN '1' THEN 'INSERT INTO [...Table...](ID,EENummer,EELang,EEKurz,Prima,Sekun,DatasetTyp) ' + 			
                          	'VALUES('+(IsNull(@ID,'leer') + ',''' 
                          	+ IsNull(@EENUMMER,'leer')	+ ''',''' 
                          	+ IsNull(@EELANG,'leer') + ''',''' 
                          	+ IsNull(@EEKURZ,'leer') + ''',' 
                          	+ IsNull(@PRIMA,'leer') + ','''
                          	+ IsNull(@SEKUN,'leer') + ',''' 
                          	+ IsNull(@DATASET_TYP,'leer') + ''
                          	)+')'
                          /*_________
                            2: Update  = geht nicht
                            _________*/	
                          WHEN '2' THEN  'UPDATE	[...Table...]
                          	SET ID= ' + @ID +',
                          		EENummer= ''' + IsNull(@EENUMMER,'leer') +''', 
                          		EELang= ''' + IsNull(@EELANG,'leer') +''', 
                          		EEKurz= ''' + IsNull(@EEKURZ,'leer') +''', 
                          		Prima= ' + IsNull(@PRIMA,'leer') +', 
                          		Sekun= ' + IsNull(@SEKUN,'leer')+', 
                          		DatasetTyp= ''' + IsNull(@DATASET_TYP,'leer') +'''
                          	WHERE
                          		ID= ' + IsNull(@ID_OLD,'leer') +' AND
                          		EENummer= ''' + IsNull(@EENUMMER_OLD,'leer') +''' AND
                          		EELang= ''' + IsNull(@EELANG_OLD,'leer') +''' AND 
                          		EEKurz= ''' + IsNull(@EEKURZ_OLD,'leer') +''' AND 
                          		Prima= ' + IsNull(@PRIMA_OLD,'leer') +' AND 
                          		Sekun= ' + IsNull(@SEKUN_OLD,'leer') +' AND 
                          		DatasetTyp= ''' + IsNull(@DATASET_TYP_OLD,'leer') +''
                          /*________
                            3: Delete = funktioniert
                            ________*/	
                          WHEN '3' THEN  'DELETE FROM	[...TABLE...]
                          		WHERE
                          			ID= ' + @ID +' AND 
                          			EENummer= ' + @EENUMMER 
                          END;	
                          PRINT @EXECUTE_BUILDER;	
                          --EXEC (@EXECUTE_BUILDER);
                          END
                          
                          
                          GO


                          Code:
                          EXECUTE  [dbo].[test] 
                             @BUTTON = '2'
                            ,@ID= 'a'
                            ,@EENUMMER= 'b'
                            ,@EELANG= 'c'
                            ,@EEKURZ= 'd'
                            ,@PRIMA= 'e'
                            ,@SEKUN= 'f'
                            ,@DATASET_TYP= 'g'
                            ,@ID_OLD= 'h'
                            ,@EENUMMER_OLD= 'i'
                            ,@EELANG_OLD= 'j'
                            ,@EEKURZ_OLD= 'k'
                            ,@PRIMA_OLD= 'l'
                            ,@SEKUN_OLD= 'm'
                            ,@DATASET_TYP_OLD= 'n'
                            ,@EXECUTE_BUILDER= 'o'
                          GO
                          jetzt siehst vielleicht schon deine schnitzer....


                          Weiherhin bin ich der Meinung wie die anderen schon, wenn du nicht gerade den Tabellenname als Parameter übergibst kommst du mit normalem SQL klar.

                          Würde auch eher dynamisches SQL vermeiden als IF und WHEN als Performancekiller zu erkennen. Eher AnzeigeSQLs optimieren als vermutlich weniger verwendete INSERT, UPDATE, DELETES

                          Ich hab auch meine I U D Operationen in einer SP und Switche anhand eines Modus varchar(1) eben i u d und des PKs.

                          Comment


                          • #14
                            Moin,

                            Weiherhin bin ich der Meinung wie die anderen schon, wenn du nicht gerade den Tabellenname als Parameter übergibst kommst du mit normalem SQL klar.
                            Das ist mir durchaus bewusst, allerdings sollte ich mich zumindest etwas an die Anweisungs halten die ich bekomme ... leider -.-

                            Also die Anreitze sind alle nicht schlecht soweit, aber ich hab da eine Idee die
                            ich gerne umsetzen würde.
                            Die Variablen in der Stored Procedure werden ja von außen gefüllt und zwar durch eine ASP.Net Webanwendung unter Verwendung von C#.
                            Ich muss nun nur noch wissen, wo in folgendem Code die Fehler sind, da er die Übergabe jedesmal versaut aber am Ende kein Error vom Stored Procedure erscheint, läuft eiskalt durch.

                            Info:
                            In der Tabelle sind ID, PRIMA und SEKUN Integer.

                            C#:
                            Ich vermute da meinen Fehler bei dem ganzen Hochkoma gewusel.
                            Code:
                            Adapter.dataBase_Adapter("[Stored Procedure]");
                            Adapter.command.Parameters.Add("@ID", SqlDbType.VarChar, 20);
                            Adapter.command.Parameters.Add("@EENUMMER", SqlDbType.VarChar, 50);
                            Adapter.command.Parameters.Add("@EELANG", SqlDbType.VarChar, 150);
                            Adapter.command.Parameters.Add("@EEKURZ", SqlDbType.VarChar, 50);
                            Adapter.command.Parameters.Add("@PRIMA", SqlDbType.VarChar, 10);
                            Adapter.command.Parameters.Add("@SEKUN", SqlDbType.VarChar, 40);
                            Adapter.command.Parameters.Add("@DATASET_TYP", SqlDbType.VarChar, 10);
                            Adapter.command.Parameters.Add("@BUTTON", SqlDbType.VarChar, 2);
                            ...
                            switch (str_Button)
                                        {
                            ...
                            default:
                                                if (str_ID != "")
                                                {
                                                    Adapter.command.Parameters["@ID"].Value = str_ID;
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@DDI"].Value = "null";
                                                }
                                                if (str_eeNummer != "")
                                                {
                                                    Adapter.command.Parameters["@EENUMMER"].Value = "'''" + str_eeNummer + "'''";
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@EENUMMER"].Value = "'null'";
                                                }
                                                if (str_eeLang != "")
                                                {
                                                    Adapter.command.Parameters["@EELANG"].Value = "'''" + str_eeLang + "'''";
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@EELANG"].Value = "'null'";
                                                }
                                                if (str_eeKurz != "")
                                                {
                                                    Adapter.command.Parameters["@EEKURZ"].Value = "'''" + str_eeKurz + "'''";
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@EEKURZ"].Value = "'null'";
                                                }
                                                if (str_eeKurz != "")
                                                {
                                                    Adapter.command.Parameters["@PRIMA"].Value = str_prima;
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@PRIMA"].Value = "null";
                                                }
                                                if (str_sekun != "")
                                                {
                                                    Adapter.command.Parameters["@SEKUN"].Value = str_sekun;
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@SEKUN"].Value = "null";
                                                }
                                                if (str_datasetTyp != "")
                                                {
                                                    Adapter.command.Parameters["@DATASET_TYP"].Value = "'''" + str_datasetTyp + "'''";
                                                }
                                                else
                                                {
                                                    Adapter.command.Parameters["@DATASET_TYP"].Value = "'null'";
                                                }
                                                
                                                break;
                            ...
                            Stored Procedure Ausschnitt
                            Code:
                            ...
                            SET @EXECUTE_BUILDER =
                            		CASE @BUTTON
                            						
                            /*_________
                              1: Insert
                              __________*/	
                            WHEN '1' THEN 'INSERT INTO [Tabelle](ID,EENummer,  EELang, EEKurz, Prima, Sekun, DatasetTyp) ' + 			
                            			'VALUES('	+@ID+','
                            					+@EENUMMER+','
                            					+@EELANG+','
                            					+@EEKURZ+','
                            					+@PRIMA+','
                            					+@SEKUN+','
                            					+@DATASET_TYP
                            					+')'
                            
                            ...END;		
                            EXEC (@EXECUTE_BUILDER);
                            Wenn mich da einer Retten könnt, weiß so langsam nicht mehr weiter.
                            Danke schonmal.

                            VG!
                            F60.2
                            Zuletzt editiert von F60.2; 15.12.2011, 14:56.

                            Comment


                            • #15
                              Auch Moin,

                              sorry, der Zeigefinger!

                              1. neues Problem, bitte neuer Thread sonst sieht hier keiner mehr durch.

                              2.
                              Ich muss nun nur noch wissen, wo in folgendem Code die Fehler sind, da er die Übergabe jedesmal versaut aber am Ende kein Error vom Stored Procedure erscheint, läuft eiskalt durch.
                              Mal ehrlich, ist das eine Fehlerbeschreibung mit der du als Außenstehender (die wir hier sind) wirklich was anfangen könntest? Liest sich zwar cool, aber die Informatiker sind halt eher die Nerds....


                              Debug - Ansätze:
                              1. Mit dem SQL Profiler schauen, was wirklich an den Server geschickt wird
                              2. alle Parameter in eine Debugtabelle schreiben, ggf. auch Zwischenschritte deiner Procedure auf diese Weise mitloggen, um den "Ausführungsplan" zu verfolgen.

                              Viel Erfolg, nix für ungut
                              Tino
                              Ich habs gleich!
                              ... sagte der Programmierer.

                              Comment

                              Working...
                              X