Pergunta

Eu estou tentando usar uma RefCursor como parâmetro de entrada em um procedimento armazenado Oracle. A idéia é selecionar um grupo de registros, alimentá-los para o procedimento armazenado e, em seguida, os loops SP sobre a RefCursor entrada, fazendo algumas operações para seus registros. Não, eu não posso selecionar os registros dentro do SP e assim evitar ter que usar o RefCursor como um tipo de entrada.

Eu encontrei um exemplo de como fazer isso em (este aqui seria o link, mas parece que eu não posso usá-los ainda) a documentação da Oracle, mas ele usa um SELECT simples para preencher o RefCursor de entrada; e é aí que reside o problema:. Eu tenho que preenchê-lo a partir do código

Você vê, no código eu tenho este:

[OracleDataParameter("P_INPUT", OracleDbType.RefCursor, ParameterDirection.Input)]
private List<MiObject> cursor;

E, eu tentei preencher cursor com um List<T>, um DataTable, mesmo um conjunto simples de MyObject e obras nada. Quando tento executar meus testes eu recebo um erro:

"Parâmetro inválido Linking"

Talvez não as palavras exatas, como eu estou traduzindo do espanhol, mas essa é a mensagem

Todas as idéias?

Foi útil?

Solução

Eu também estou em contato com Mark Williams, o autor do artigo que eu tentei link no meu post, e ele tem kinly respondeu assim:

" Não é nenhum problema para me enviar e-mail; no entanto, eu acho que vai decepcioná-lo com a minha resposta em um presente.

Infelizmente você não pode fazer o que você está tentando fazer (criar um refcursor do cliente assim).

Um par de problemas com que são que uma refcursor refere-se a memória de propriedade da Oracle no servidor e Oracle não tem noção de itens de cliente como um DataTable ou uma lista NET, etc.

Você tem outras opções disponíveis à excepção de usar um refcursor? "

Então, basicamente eu estou ferrado, e esta questão está fechada. Obrigado pela leitura e / ou tentando ajudar, todos vocês.

Outras dicas

De memória, não há um lugar classe OracleCursor na biblioteca ODP.NET que as obras?

este amostra para refcursor como entrada para pl / sql do TechNet oráculo.

O Clou é que o objeto refcursor entrada deve ser criado pela Oracle themself. Você não pode converter uma lista ou qualquer outra coisa para refcursor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top