Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

COM object call με TSQL

Îåêßíçóå áðü ôï ìÝëïò axaros. Τελευταία δημοσίευση από το μέλος axaros στις 02-08-2005, 14:33. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-08-2005, 13:59 3946

    COM object call με TSQL

    Γίνεται παιδιά ;
    Και αν ναι έχετε κάποιο παράδειγμα ;

     


    Πάνος Αβραμίδης
  •  02-08-2005, 14:14 3947 σε απάντηση της 3946

    Απ:COM object call με TSQL

    Γίνεται αλλά είναι φασαρία. Υπάρχει μια σειρά από stored procedures, οι sp_OACreate, sp_OADestroy, sp_OAMethod κλπ οι οποίες δημιουργούν ένα COM αντικείμενο, επιστρέφουν ένα handle και σου επιτρέπουν να καλέσεις μεθόδους και properties δίνοντας το όνομά τους σαν string. Δες αυτό το άρθρο http://www.mssqlcity.com/Articles/General/OleAutSP.htm και το κεφάλαιο "OLE Automation Objects in Transact-SQL"  στο Books Online.

    Το αποτέλεσμα είναι λίγο άσχημο:

    DECLARE @object int
    DECLARE @hr int
    DECLARE @property varchar(255)
    DECLARE @return varchar(255)
    DECLARE @src varchar(255), @desc varchar(255)
    
    -- Create a SQLServer object.
    SET NOCOUNT ON
    
    -- First, create the object.
    EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
    IF @hr <> 0
       -- Report the error.
       EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
       SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
       GOTO END_ROUTINE
    ELSE
       -- An object is successfully created.
       BEGIN
          -- Set a property.
          EXEC @hr = sp_OASetProperty @object, 'HostName', 'Gizmo'
          IF @hr <> 0 GOTO CLEANUP
          
          -- Get a property using an output parameter.
          EXEC @hr = sp_OAGetProperty @object, 'HostName', @property OUT
          IF @hr <> 0 
             GOTO CLEANUP
          ELSE
             PRINT @property
          
          -- Get a property using a result set.
          EXEC @hr = sp_OAGetProperty @object, 'HostName'
          IF @hr <> 0 GOTO CLEANUP
    
          -- Get a property by calling the method.
          EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
          IF @hr <> 0 
             GOTO CLEANUP
          ELSE
             PRINT @property
    
          -- Call a method.
          -- SECURITY NOTE - When possible, use Windows Authentication.
          EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server', 'my_login', 'my_password'
          IF @hr <> 0 GOTO CLEANUP
          
          -- Call a method that returns a value.
          EXEC @hr = sp_OAMethod @object, 'VerifyConnection', @return OUT
          IF @hr <> 0
             GOTO CLEANUP
          ELSE
             PRINT @return
       END
    
    CLEANUP:
       -- Check whether an error occurred.
       IF @hr <> 0
       BEGIN
          -- Report the error.
          EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
          SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
       END
    
       -- Destroy the object.
       BEGIN
          EXEC @hr = sp_OADestroy @object
          -- Check if an error occurred.
          IF @hr <> 0 
          BEGIN
             -- Report the error.
             EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
             SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
          END
       END
    
    END_ROUTINE:
    RETURN
    

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  02-08-2005, 14:33 3948 σε απάντηση της 3947

    Απ:COM object call με TSQL

    Παναγιώτη ευχαριστώ θερμά !!!


    Πάνος Αβραμίδης
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems