2011-02-01 3 views
0

Я оракул хранимая процедура с signiture: (часть пакета: Подрядчик)Execute Oracle ХП

Я пытаюсь выполнить это нравится:

execute Contractor.usp_sel_contractors; 

Я привык к MSSQLServer. Похоже, это должно быть направлено вперед.

Я получаю сообщение об ошибке:

Invalid Sql Statement 

Спасибо!

+0

Что такое "sel_contractor" - это ссылка курсора? –

+0

нет его хранимой пользователем процедуры. часть пакета под названием Подрядчик. 'execute Contractor.usp_sel_contractors' также имеет тот же эффект – kralco626

+0

Нет, я спрашивал о« sel_contractor », а не« usp_sel_contractor »- слово« OUT ». –

ответ

3

Предполагая sel_contractor является исм тип курсора, вы можете сделать это в SQL Plus:

var rc refcursor 

exec usp_sel_contractors(:rc) 

print rc 
+0

Вы говорите, что я могу сделать это в sql plus, есть ли способ сделать это в sql-разработчике? – kralco626

+1

Да, это тоже работает в SQL Developer - я просто попробовал. Используйте кнопку «запустить сценарий». –

+0

Я пробовал: «var rc refcursor exec Contractor.usp_sel_contractors (: rc) print rc' и не получил результатов, но под выходом скрипта. Он говорит:« Использование: VAR [IABLE] [ [NUMBER | CHAR | CHAR (n [CHAR | BYTE]) | VARCHAR2 (n [CHAR | BYTE]) | NCHAR | NCHAR (n) | NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE]] ' – kralco626

1

Я не уверен, почему вы получите это сообщение об ошибке, но очевидная проблема заключается в том, что процедура имеет параметр, и вы не передаете ее. Поскольку это параметр OUT, вам необходимо передать переменную соответствующего типа, которая будет заполнена процедурой.

Например:

DECLARE 
    my_contractors sel_contractor; 
BEGIN 
    usp_sel_contractors(my_contractors); 

    // Do something with the contents of my_contractors here 
END; 
/
+1

ugh. Хорошо, спасибо. Оставьте это Oracle, чтобы сделать это сложным. Я просто хочу вывести результаты? Как мне это сделать? – kralco626

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