Ответ 1
Вам не нужно предложение EXEC. Просто используйте
proc_name paramValue1, paramValue2
(и вам нужны запятые, как упомянуто Misnomer)
Мне предоставлена учетная запись пользователя в базу данных SQL Server, которая имеет только привилегии для выполнения хранимой процедуры. Я добавил JAR файл JTDS SQL Server JDBC в SQL Developer и добавил его как драйвер JDBC сторонних разработчиков. Я могу успешно войти в базу данных SQL Server. Мне был дан этот синтаксис для запуска процедуры:
EXEC proc_name 'paramValue1' 'paramValue2'
Когда я запускаю это как инструкцию или script, я получаю эту ошибку:
Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.
Я попытался обернуть оператор в BEGIN/END
, но получить ту же ошибку. Можно ли вызвать процедуру из SQL Developer? Если да, то какой синтаксис мне нужно использовать?
Вам не нужно предложение EXEC. Просто используйте
proc_name paramValue1, paramValue2
(и вам нужны запятые, как упомянуто Misnomer)
Вам не хватает ,
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
Мне нужно сохранить результат предложения select в .csv файле. Как мне это сделать? В Oracle есть команда spool, которую я могу использовать для этого, но как я могу сделать это на sqlServer?
БР Карри
Если вам просто нужно извинить хранимую процедуру proc_name 'paramValue1', 'paramValue2'...
в то же время вы выполняете более одного запроса, например, один запрос select и хранимую процедуру, вам нужно добавить select * from tableName EXEC proc_name paramValue1, paramValue2...
Хранимые процедуры могут быть запущены в инструменте разработчика sql, используя синтаксис ниже
НАЧАТЬ ИмяПроцедуры(); END;
Если есть какие-либо параметры, тогда он должен быть передан.
Select * from Table name ..i.e(are you save table name in sql(TEST) k.
Select * from TEST then you will execute your project.