IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

intégration procédure SQL


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut intégration procédure SQL
    Bonjour,

    J'ai besoin d'integrer la procédure suivante à partir d'une ligne de commande dans une base SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_Recurring_Updates_MD]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE [dbo].sp_Recurring_Updates_MD
    GO
     
    CREATE PROCEDURE [dbo].sp_Recurring_Updates_MD 
    @PackageName nvarchar(64)
    AS
    BEGIN
    DECLARE @ClientID int
    DECLARE @DeviceList CURSOR
    DECLARE @PackageID int
    DECLARE @Now smalldatetime
     
    SET @Now = GETDATE()
    SET @PackageID = (SELECT SoftwarePackageId
    from SoftwarePackage 
    where UPPER([Name]) = UPPER(@PackageName))
     
    SET @DeviceList =CURSOR FOR 
    SELECT ClientID 
    FROM [RapportDB].[dbo].[ClientNetwork]
     
    OPEN @DeviceList
    FETCH NEXT FROM @DeviceList INTO @ClientID 
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
    exec sp_addupdcommand @Now,@ClientID,@PackageID,1,1,@Now,5,1,0,0,'',1
    -- Select @ClientID, @PackageID, GETDATE()
    FETCH NEXT FROM @DeviceList INTO @ClientID 
    END
    CLOSE @DeviceList
    DEALLOCATE @DeviceList
    END
    GO
    Quelle commande SQL utiliser (possible avec OSQL ?)

    Merci.

  2. #2
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Le "commande" SQL, vous l'avez déjà. Pour l'outil en ligne de commande, vous pouvez utiliser sqlcmd.

    @+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Si je lance en .bat la commande
    osql -S {serveur} -U username -P password -Q "sp_Recurring_Updates_MD shutdown"

    j'ai ceci en retour :

    Msg 201, Level 16, State 4, Server SERV-TSE\RAPPORTDB, Procedure sp_Recurring_Updates_MD, Line 0
    Procedure 'sp_Recurring_Updates_MD' expects parameter '@PackageName',
    which was not supplied.
    Qu'est qui ne va pas ?

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Msg 201, Level 16, State 4, Server SERV-TSE\RAPPORTDB, Procedure sp_Recurring_Updates_MD, Line 0
    Procedure 'sp_Recurring_Updates_MD' expects parameter '@PackageName',
    which was not supplied.
    Le message est clair : le paramètre @PackageName n'a pas été valué.

    Écrivez plutôt votre commande avec shutdown entre quotes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    osql -S {serveur} -U username -P password -Q "sp_Recurring_Updates_MD 'shutdown'"
    Néanmoins, si vous êtes sous SQL Server 2005 ou 2008, vous feriez bien de suivre le conseil d'agemis31, qui vous a proposé d'utiliser SQLCMD : c'est le remplaçant de OSQL.
    Vous pouvez passer le script de création de votre procédure stockée en paramètre en utilisant le commutateur -i et éventuellement le commutateur -o pour récupérer le résultat de l'exécution de votre script dans un fichier texte.

    @++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Ca fonctionne.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les lignes d'une procédure SQL Server dans le programme VB.NET
    Par Mikelester12 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 30/07/2007, 11h33
  2. Procédure SQL : Boucle sur CURSEUR
    Par Yakaldir dans le forum DB2
    Réponses: 5
    Dernier message: 10/03/2007, 15h56
  3. Procédure SQL : Ajout d'une chaîne à une autre
    Par Yakaldir dans le forum DB2
    Réponses: 5
    Dernier message: 10/03/2007, 15h54
  4. migration - procédure SQL Server
    Par habasque dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/12/2006, 11h40
  5. [SQL Server 2005][SP] Procédure & SQL Dynamique
    Par softflower dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2006, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo