web-dev-qa-db-fra.com

Comment exécuter une procédure stockée SQL Server dans SQL Developer?

Un compte utilisateur m'a été attribué à une base de données SQL Server qui ne dispose que de privilèges pour exécuter une procédure stockée. J'ai ajouté le fichier jar JDBC JTDS SQL Server à SQL Developer et l'a ajouté en tant que pilote JDBC tiers. Je peux réussir à me connecter à la base de données SQL Server. On m'a donné cette syntaxe pour exécuter la procédure:

EXEC proc_name 'paramValue1' 'paramValue2'

Lorsque j'exécute ceci en tant qu'instruction ou script, j'obtiens cette erreur:

Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.

J'ai essayé d'encapsuler la déclaration dans BEGIN/END, mais j'obtiens la même erreur. Est-il possible d'appeler la procédure depuis SQL Developer? Si oui, quelle syntaxe dois-je utiliser?

132
sdoca

Vous n'avez pas besoin de la clause EXEC. Simplement utiliser

proc_name paramValue1, paramValue2

(et vous avez besoin de virgules comme Misnomer mentionné)

205
Tema

Il vous manque ,

EXEC proc_name 'paramValue1','paramValue2'
66
Vishal

Vous devez faire ceci:

    exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'
17
Daniel
    EXECUTE [or EXEC] procedure_name
  @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'
4
Prasanna Gulhane
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

Si l'objectif de la procédure stockée consiste à exécuter une INSERT sur une table ayant un champ Identity déclaré, le champ, dans ce scénario @paramValue1, doit être déclaré et ne transmettre que la valeur 0, car il sera incrémenté automatiquement. 

0
chri3g91

Je sais que c'est l'ancien. Mais cela peut aider les autres.

J'ai ajouté la fonction d'appel SP entre BEGIN/END. Voici un script de travail.

ALTER Proc [dbo].[DepartmentAddOrEdit]
@Id int,
@Code varchar(100),
@Name varchar(100),
@IsActive bit ,
@LocationId int,
@CreatedBy int,
@UpdatedBy int
AS
    IF(@Id = 0)

    BEGIN
    INSERT INTO Department (Code,Name,IsActive,LocationId,CreatedBy,UpdatedBy,CreatedAt)
        VALUES(@Code,@Name,@IsActive,@LocationId,@CreatedBy,@UpdatedBy,CURRENT_TIMESTAMP)

    EXEC dbo.LogAdd @CreatedBy,'DEPARTMENT',@Name
    END

    ELSE

    UPDATE Department SET
        Code = @Code,
        Name = @Name,
        IsActive = @IsActive,
        LocationId = @LocationId,
        CreatedBy = @CreatedBy,
        UpdatedBy = @UpdatedBy,
        UpdatedAt =  CURRENT_TIMESTAMP 
    where Id = @Id 
0
Roshan Perera