it-swarm.com.de

Wie führt man eine gespeicherte Prozedur von SQL Server in SQL Developer aus?

Ich habe ein Benutzerkonto für eine SQL Server-Datenbank erhalten, die nur über Berechtigungen zum Ausführen einer gespeicherten Prozedur verfügt. Ich habe die JTDS SQL Server-JDBC-JAR-Datei zu SQL Developer hinzugefügt und sie als JDBC-Treiber von Drittanbietern hinzugefügt. Ich kann mich erfolgreich bei der SQL Server-Datenbank anmelden. Mir wurde diese Syntax gegeben, um die Prozedur auszuführen:

EXEC proc_name 'paramValue1' 'paramValue2'

Wenn ich dies entweder als Anweisung oder als Skript ausführe, erhalte ich folgende Fehlermeldung:

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

Ich habe versucht, die Anweisung in BEGIN/END einzuhüllen, bekomme aber den gleichen Fehler. Kann die Prozedur von SQL Developer aufgerufen werden? Wenn ja, welche Syntax muss ich verwenden?

132
sdoca

Sie brauchen keine EXEC-Klausel. Einfach verwenden

proc_name paramValue1, paramValue2

(und du brauchst Kommas wie Misnomer erwähnt)

205
Tema

Du fehlst ,

EXEC proc_name 'paramValue1','paramValue2'
66
Vishal

Sie müssen das tun:

    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
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

Wenn das Ziel der gespeicherten Prozedur darin besteht, eine INSERT für eine Tabelle auszuführen, für die ein Identitätsfeld deklariert ist, sollte das Feld in diesem Szenario @paramValue1 deklariert werden und den Wert 0 übergeben, da es automatisch inkrementiert wird. 

0
chri3g91

Ich weiß, das ist der Alte. Aber das kann anderen helfen.

Ich habe zwischen BEGIN/END die aufrufende Funktion SP hinzugefügt. Hier ist ein Arbeitsskript.

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