0
Я создал пакет:Execute Oracle ХП с использованием .Net
create or replace PACKAGE merc
AS
TYPE resultcurtyp is REF CURSOR;
END merc;
а затем хранимая процедура:
create or replace PROCEDURE merc_results
(
testP IN VARCHAR2 DEFAULT NULL,
CURSOR_ IN OUT merc.resultcurtyp
) AS
BEGIN
OPEN CURSOR_ FOR
SELECT /*csv*/
FR.*
FROM DS.table1 FR
INNER JOIN DS.price PN ON PN.OBJECTID = FR.SOURCEID
WHERE FR.NAME = testP
END merc_results;
В то время как вызов ХП код формы .Net дает мне:
ORA-06550: line 1, column 15:
PLS-00222: no function with name 'merc' exists in this scope
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Должен ли я создать пакет , вызов сохраняется из этого, а затем вызывает упаковку e из .Net? Я сейчас вызываю хранимый proc непосредственно из кода. Я раньше не работал с oracle db.
Есть ли причина того, что вам нужно объявить свой собственный слабо типизированный курсор, а не только декларирует 'cursor_' типа' sys_refcursor'? Вы действительно хотите, чтобы параметр 'cursor_' был' IN OUT', а не просто 'OUT'? И почему вы используете подсказку '/ * csv * /' в хранимой процедуре - это просто директива разработчика SQL. Вы отметили это для SQL Developer, что заставляет меня подозревать, что подсказка 'csv' должна делать что-то функциональное? –
Ну, вы не показываете код вызова C#. – OldProgrammer
@JustinCave, он на самом деле не использует подсказку csv, ему не хватает плюса, '/ * + csv * /', поэтому это всего лишь комментарий. –