Ik heb een gebruikersaccount gekregen voor een SQL Server-database die alleen privileges heeft om een opgeslagen procedure uit te voeren. Ik heb het JTDS SQL Server JDBC jar-bestand toegevoegd aan SQL Developer en toegevoegd als een JDBC-stuurprogramma van derden. Ik kan met succes inloggen op de SQL Server-database. Ik kreeg deze syntaxis om de procedure uit te voeren:
EXEC proc_name 'paramValue1' 'paramValue2'
Als ik dit als een instructie of een script uitvoer, krijg ik deze foutmelding:
Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.
Ik heb geprobeerd de instructie in BEGIN/END
te plaatsen, maar krijg dezelfde foutmelding. Is het mogelijk om de procedure vanuit SQL Developer aan te roepen? Zo ja, welke syntaxis moet ik gebruiken?
Antwoord 1, autoriteit 100%
Je hebt geen EXEC-clausule nodig. Gebruik gewoon
proc_name paramValue1, paramValue2
(en je hebt komma’s nodig zoals de verkeerde benaming al zei)
Antwoord 2, autoriteit 32%
Je mist ,
EXEC proc_name 'paramValue1','paramValue2'
Antwoord 3, autoriteit 9%
U moet dit doen:
exec procName
@parameter_1_Name = 'parameter_1_Value',
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
Antwoord 4, autoriteit 2%
EXECUTE [or EXEC] procedure_name
@parameter_1_Name = 'parameter_1_Value',
@parameter_2_name = 'parameter_2_value',
@parameter_z_name = 'parameter_z_value'
Antwoord 5
Ik weet dat dit de oude is. Maar dit kan anderen helpen.
Ik heb een SP-oproepfunctie toegevoegd tussen BEGIN/END. Hier is een werkend script.
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
Antwoord 6
Je moet een ‘,’ toevoegen tussen de paramValue1 en paramValue2. Je hebt het gemist.
EXEC proc_name 'paramValue1','paramValue2'
Antwoord 7
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO
Als het doel van de Opgeslagen procedure is om een INSERT
uit te voeren op een tabel waarvoor een identiteitsveld is gedeclareerd, dan moet het veld, in dit scenario @paramValue1
, worden gedeclareerd en geef gewoon de waarde 0 door, omdat deze automatisch wordt verhoogd.
Antwoord 8
Als u uw opgeslagen procedure alleen maar wilt uitvoeren
proc_name 'paramValue1' , 'paramValue2'...
tegelijkertijd voert u meer dan één query uit, zoals één geselecteerde query en een opgeslagen procedure die u moet toevoegen
select * from tableName
EXEC proc_name paramValue1 , paramValue2...
Antwoord 9
De opgeslagen procedures kunnen worden uitgevoerd in de SQL Developer Tool met behulp van de onderstaande syntaxis
BEGIN
procedurenaam();
EINDE;
Als er parameters zijn, moet deze worden doorgegeven.
Antwoord 10
Select * from Table name ..i.e(are you save table name in sql(TEST) k.
Select * from TEST then you will execute your project.