Comment exécuter SQL Server procédure stockée dans SQL Developer?
On m'a donné un compte utilisateur à une base de données SQL Server qui n'a que des privilèges pour exécuter une procédure stockée. J'ai ajouté le fichier JAR JDBC JTDS SQL Server à SQL Developer et l'ai ajouté en tant que pilote JDBC tiers. Je peux me connecter avec succès à la base de données SQL Server. On m'a donné cette syntaxe pour exécuter la procédure:
EXEC proc_name 'paramValue1' 'paramValue2'
Quand je l'exécute comme une instruction ou un 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'envelopper l'instruction dans BEGIN/END
, mais j'ai la même erreur. Est-il possible d'appeler la procédure à partir de SQL Developer? Si oui, quelle syntaxe dois-je utiliser?
9 réponses
Vous n'avez pas besoin de clause EXEC. Utilisez simplement
proc_name paramValue1, paramValue2
(et vous avez besoin de virgules comme terme erroné mentionné)
, Vous devez faire ceci:
exec procName
@parameter_1_Name = 'parameter_1_Value',
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
EXECUTE [or EXEC] procedure_name
@parameter_1_Name = 'parameter_1_Value',
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO
Si l'objectif de la procédure stockée est d'effectuer un INSERT
sur une table qui a un champ D'identité déclaré, Alors le champ, dans ce scénario @paramValue1
, doit être déclaré et passer simplement la valeur 0, car il sera auto-incrémenté.
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
Si vous avez simplement besoin d'excuser votre procédure stockée
proc_name 'paramValue1' , 'paramValue2'...
en même temps, vous êtes excrété plus d'une requête comme une requête select et une procédure stockée que vous devez ajouter
select * from tableName
EXCE proc_name paramValue1 , paramValue2...
Les procédures stockées peuvent être exécutées dans sql developer tool en utilisant la syntaxe ci-dessous
Début nom de procédure(); Fin;
S'il y a des paramètres, il doit être passé.
Select * from Table name ..i.e(are you save table name in sql(TEST) k.
Select * from TEST then you will execute your project.