Announcement

Collapse
No announcement yet.

in SP Parameter dynamisch Ausgeben lassen mgl.?

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

  • in SP Parameter dynamisch Ausgeben lassen mgl.?

    hallo,
    ich möchte gerade mein Debugging in Prozeduren verbessern. Ich arbeite schon mit select OBJECT_NAME(@@PROCID) um auf den Prozedurnamen zu kommen. Gibt es auch einen Befehl der alle Parameter der aktuellen Prozedur zurückliefert?

    Aktuell würde ich die Paramter händisch per @parametername1 @parametername2 usw. für Debugging zu einem String zusammenfügen und in eine Tabelle loggen oder per Print ausgeben.

    Kommt ein neuer hinzu muss ich auch das debugging erweitern....

  • #2
    Hi OpenShinook,

    über sys.parameters alle Parameter der entsprechenden SP ermittlen, dynamisch den Debugstring mit den Werten der Parameter zusammenbasteln...

    Comment


    • #3
      wow! das rockt! danke

      Comment


      • #4
        ich nochmal...
        Auf die Parameterliste kann ich zugreifen. Aber ich komme an den Inhalt nicht ran. Selbst wenn ich mir das Statement dynamisch zusammenbaue, immer wenn ich es mit EXEC ausführe meckert er dass er die Variablen nicht kennt. Kann ich nachvollziehen da EXEC eine weitere SP ist....



        PHP Code:

         
        --CREATE TABLE [dbo].[tbl_test](
        --    [
        testID] [intIDENTITY(1,1NOT NULL,
        --     [
        debug] [nvarchar](maxNULL,
        -- 
        CONSTRAINT [PK_tbl_testPRIMARY KEY CLUSTERED 
        --(
        --    [
        testIDASC
        --)WITH (PAD_INDEX  OFFSTATISTICS_NORECOMPUTE  OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS  ONALLOW_PAGE_LOCKS  ONON [PRIMARY]
        --) 
        ON [PRIMARY]



        create PROCEDURE dbo.tempTest 
             
        @int1 int,
        @
        int2 int
        AS
        BEGIN
         
            SET NOCOUNT ON
        ;

         
        --
        geht
        --EXEC ('INSERT INTO [dbo].[tbl_test] (debug) VALUES (CAST(' + @int1 ' AS NVARCHAR(MAX)));')

        DECLARE @
        Stmt NVARCHAR(MAX);
        SET @Stmt = (  SELECT  REPLACE (X.Stmt'
'CHAR(13))
                       
        FROM   (
         
                                
        SELECT TOP 1

        'INSERT INTO [dbo].[tbl_test] (debug) VALUES (CAST( ' +
                                
        CAST([name] as NVARCHAR(MAX)) + '  AS NVARCHAR(MAX)))'+
                                
        CHAR(59)+ CHAR(13)
         
        from sys.parameters 

        WHERE object_id 
        = @@PROCID

          
                                
        FOR XML PATH (''
                              ) AS 
        (Stmt)
                    );
          
        Print @
        stmt         
        EXEC 
        (@Stmt);  


        SELECT @int1, @int2

            
        END
        GO 

        Comment


        • #5
          sp_ExecuteSQL kann das...

          Comment


          • #6
            Leider nicht

            Zitat (http://msdn.microsoft.com/de-de/library/ms188001.aspx)
            "sp_executesql-Batch kann nicht auf Variablen verweisen, die in dem Batch deklariert werden, der sp_executesql aufruft."

            Comment

            Working...
            X