powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проблема с OracleParameter, имеющего значение по умолчанию
3 сообщений из 3, страница 1 из 1
Проблема с OracleParameter, имеющего значение по умолчанию
    #35368400
Andy G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я создал процедуру в Oracle, имеющую параметры со значениеми по умолчанию:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create or replace procedure JOB_EDIT (
v_job_id in jobs.job_id%type, 
v_job_title in jobs.job_title%type,
v_min_salary in jobs.min_salary%type:=null,
v_max_salary in jobs.max_salary%type:=null
) 
is
begin
....

Я в Oracle новичек, до этого работал с SQL Server и в коде C# я просто не добавлял параметры в команду, если мне надо было, чтоб они приняли значения по умолчанию.
Однако тут это не проходит и вылетает исключение:
OracleException: "ORA-01008: not all variables bound"
Вот фрагмент кода C#:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
OracleConnection conn = null;
OracleTransaction tran=null;
try {
conn = new OracleConnection( ...here my connection string ... );

string strCmd = "begin job_edit(:v_job_id, :v_job_title, :v_min_salary, :v_max_salary); end;";

OracleCommand cmd = new OracleCommand(strCmd, conn);
cmd.Parameters.Add(new OracleParameter(":v_job_id", OracleType.VarChar,  10 )).Value = jobRow.JOB_ID;
cmd.Parameters.Add(new OracleParameter(":v_job_title", OracleType.VarChar,  35 )).Value = jobRow.JOB_TITLE;

// Что надо тут присвоить параметрам v_min_salary и v_max_salary ?

conn.Open();
cmd.Transaction = tran = conn.BeginTransaction();
cmd.ExecuteNonQuery();
tran.Commit();
}
catch (OracleException ex) {
// here OracleException: "ORA-01008: not all variables bound"
tran.Rollback();
}
catch (Exception ex) {
tran.Rollback();
}
finally {
conn.Close();
}

Помогите пожалуйста.
...
Рейтинг: 0 / 0
Проблема с OracleParameter, имеющего значение по умолчанию
    #35368555
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy G.Я в Oracle новичек, до этого работал с SQL Server и в коде C# я просто не добавлял параметры в команду, если мне надо было, чтоб они приняли значения по умолчанию.
Однако тут это не проходит и вылетает исключение:
OracleException: "ORA-01008: not all variables bound"
в оракле вы просто опускаете эти параметры, т.е. получаете код след.вида:

Код: plaintext
string strCmd = "begin job_edit(:v_job_id, :v_job_title); end;";
...
Рейтинг: 0 / 0
Проблема с OracleParameter, имеющего значение по умолчанию
    #35381584
Andy G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я нашел уже еще одно решение.
Я задаю эту команду в стиле .NET
И еще не надо перед именем праметра ставить символ двоеточия.
Вот измененный фрагмент:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
OracleConnection conn = null;
OracleTransaction tran=null;
try {
   conn = new OracleConnection( ...here my connection string ... );
   OracleCommand cmd = new OracleCommand("job_edit", conn);
   cmd.CommandType = CommandType.StoredProcedure;

   cmd.Parameters.Add(new OracleParameter("v_job_id", OracleType.VarChar,  10 )).Value = jobRow.JOB_ID;
   cmd.Parameters.Add(new OracleParameter("v_job_title", OracleType.VarChar,  35 )).Value = jobRow.JOB_TITLE;

   // Параметры со значениями по умолчанию не надо вовсе добавлять.

   conn.Open();
   cmd.Transaction = tran = conn.BeginTransaction();
   cmd.ExecuteNonQuery();
   tran.Commit();
Все работает нормально теперь.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проблема с OracleParameter, имеющего значение по умолчанию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]