Как выполнить хранимую процедуру SQL Server в SQL Developer?

мне была предоставлена учетная запись пользователя в базе данных SQL Server, которая имеет права только на выполнение хранимой процедуры. Я добавил файл jar JDBC JTDS SQL Server в SQL Developer и добавил его в качестве стороннего драйвера JDBC. Я могу успешно войти в базу данных SQL Server. Мне был дан этот синтаксис для выполнения процедуры:

EXEC proc_name 'paramValue1' 'paramValue2'

когда я запускаю это как оператор или скрипт, я получаю эту ошибку:

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

Я попытался обернуть заявление в BEGIN/END, но получите ту же ошибку. Можно ли вызвать процедуру из SQL Developer? Если да, то какой синтаксис мне нужно использовать?

9 ответов


вам не нужно предложение EXEC. Просто используйте

proc_name paramValue1, paramValue2

(и вам нужны запятые, как упомянуто неправильное название)


вам не хватает ,

EXEC proc_name 'paramValue1','paramValue2'

вам нужно сделать это:

    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

Если целью хранимой процедуры является выполнение INSERT в таблице, которая имеет объявленное поле идентификатора, а затем поле в этом сценарии @paramValue1, должно быть признано и просто передать значение 0, потому что это будет автоинкрементной.


Я знаю, что это старый. Но это может помочь другим.

Я добавил функцию вызова SP между BEGIN / END. Вот рабочий скрипт.

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 

Если вам просто нужно excute ваша хранимая процедура proc_name 'paramValue1' , 'paramValue2'... в то же время вы excute более одного запроса, как один запрос select и хранимая процедура, которую вы должны добавить select * from tableName EXCE proc_name paramValue1 , paramValue2...


хранимые процедуры можно запустить в SQL developer tool, используя следующий синтаксис

начать имя процедуры(); Конец;

Если есть какие-то параметры, то он должен быть принят.


Select * from Table name ..i.e(are you save table name in sql(TEST) k.

Select * from TEST then you will execute your project.