Я пытаюсь выполнить пакет и функцию в базе данных Oracle 11g.У меня есть следующий код:
CREATE OR REPLACE PACKAGE BODY reports_aml IS
FUNCTION aml_web_service(p_last_name varchar2 := Null,
p_first_name varchar2 := Null,
p_entity_name varchar2 := Null ,
p_user_name varchar2 := Null ,
p_accuracy varchar2 := Null,
p_counrty varchar2 := Null ) RETURN TVERIFY_RESULT
PIPELINED
IS
c_result result_cursor;
v_search_results t_table;
v_time_start DATE := SYSDATE;
v_exec_time VARCHAR2(20);
CURSOR cur (v_time_start in DATE ,v_search_results in t_table)
--...*
В PL / SQL Developer, после тестирования у меня есть таблица результатов, мне нужно вставить результат в сетку VisualStudio 2017, ASP.NET.И я использую следующий код C #
using System;
//....
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
protected void btn1_Click(object sender, EventArgs e)
{
List<PersonMin> pm = new List<PersonMin>();
string ConStr = "User Id=xxx; password=xxx; Data
Source=xxx; Pooling=false";
OracleConnection con = new OracleConnection();
con.ConnectionString = ConStr;
con.Open();
//Command
OracleCommand cmd = new OracleCommand("reports_aml.aml_rep1", con);
cmd.CommandType = CommandType.StoredProcedure;
//cmd.CommandType = CommandType.Text;
//add parameters
cmd.Parameters.Add("v_search_results", OracleDbType.RefCursor,
ParameterDirection.ReturnValue);
cmd.Parameters.Add("p_first_name", OracleDbType.Varchar2,
ParameterDirection.Input);
cmd.Parameters.Add("p_last_name", OracleDbType.Varchar2,
ParameterDirection.Input);
cmd.Parameters.Add("p_entity_name", OracleDbType.Varchar2,
ParameterDirection.Input);
cmd.Parameters.Add("p_user_name", OracleDbType.Varchar2,
ParameterDirection.Input);
cmd.Parameters.Add("p_accuracy", OracleDbType.Int16,
ParameterDirection.Input);
cmd.Parameters["p_first_name"].Value = fnTB.Text;
cmd.Parameters["p_last_name"].Value = lnTB.Text;
cmd.Parameters["p_accuracy"].Value =
Int16.Parse(a1DDL.SelectedValue);
cmd.Parameters["p_entity_name"].Value = null;
cmd.Parameters["p_user_name"].Value = null;
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
pm.Add(new PersonMin(Int32.Parse(dr[0].ToString()),
Int32.Parse(dr[1].ToString()), dr[2].ToString(), dr[3].ToString(),
dr[4].ToString(), dr[5].ToString(), dr[6].ToString(), dr[7].ToString(),
dr[8].ToString(), dr[9].ToString(), dr[10].ToString(),
dr[11].ToString(), dr[12].ToString()));
}
dr.Close();
con.Close();
У меня нет ошибок, но тоже нет результатов, я не понимаю, что не так
Любая помощь?