2010-11-09 4 views
116

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

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? Если да, то какой синтаксис мне нужно использовать?

ответ

187

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

proc_name paramValue1, paramValue2 

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

+7

Есть ли исключения из этого правила?Кажется, я получаю сообщение об ошибке «Неправильный синтаксис рядом с« sp_dev_mystoredproc »». при выполнении этого синтаксиса. – Nuzzolilo

+0

EXEC pre proc_name требуется в моем случае –

+2

@Nuzzolilo https://stackoverflow.com/a/37334739/1304456 – MuriloKunze

57

Вы отсутствуют ,

EXEC proc_name 'paramValue1','paramValue2' 
+1

Я добавил недостающую запятую, но опять же получаю ту же ошибку. – sdoca

+0

Каковы ваши параметры, если они являются varchar, тогда вам нужны только кавычки ... кроме того, что ничего не может придумать ... вы можете попробовать это просто запустить только это в новом окне - 'EXEC proc_name' и посмотреть, он запрашивает у вас второй параметр ... тогда, по крайней мере, вы знаете, что ваш sytax прав .., если он не работает, значит, вы, вероятно, не имеете права сохраненного имени proc ... попробуйте полное квалифицированное имя. – Vishal

+0

Я удалил второй параметр и все еще та же ошибка. Я не думаю, что это работает процедура вообще. Команда EXEC не выделяется синтаксисом, поэтому я предполагаю, что разработчик не распознает ее, даже если соединение связано с базой данных SQL Server. Но я не могу найти что-либо в Интернете, чтобы подтвердить/опровергнуть это. – sdoca

-6

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

НАЧАТЬ ИмяПроцедуры(); END;

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

+0

Почему вы заключаете единую инструкцию с помощью блока операторов? Вы должны сделать это для [серии инструкций T-SQL] (https://msdn.microsoft.com/en-us/library/ms190487.aspx). –

15

Вы должны сделать это:

exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value', 
    @parameter_z_name = 'parameter_z_value' 
-9
Select * from Table name ..i.e(are you save table name in sql(TEST) k. 

Select * from TEST then you will execute your project. 
+1

Добро пожаловать в stackoverflow. Пройдите тур [this] (http://stackoverflow.com/tour), чтобы узнать, как работает этот сайт и для чего он предназначен. Каков твой ответ? –

+2

LOL - интересно, как этот ответ был до редактирования. –

+0

@TobyHolland нажмите на ссылку, отредактированную " –

6
EXECUTE [or EXEC] procedure_name 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value', 
    @parameter_z_name = 'parameter_z_value' 
-2

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

0
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text'; 
GO 

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

Смежные вопросы