Форум: "Базы";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизОткрытие курсора с переменным кол-вом параметров Найти похожие ветки
← →
Сатир (2006-11-01 13:04) [0]Как можно реализовать сабж?
На данный момент параметры передаются в виде XML, парсятся и курсор открывается таким макаром:
If (Not p_Sql%Isopen) Then
Begin
If (v_Par_Count = 0) Then
Open p_Sql For v_Sql;
ElsIf (v_Par_Count = 1) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value;
ElsIf (v_Par_Count = 2) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value;
ElsIf (v_Par_Count = 3) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value;
ElsIf (v_Par_Count = 4) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value;
ElsIf (v_Par_Count = 5) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value,
v_Par_List(5).Par_Value;
ElsIf (v_Par_Count = 6) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value,
v_Par_List(5).Par_Value, v_Par_List(6).Par_Value;
ElsIf (v_Par_Count = 7) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value,
v_Par_List(5).Par_Value, v_Par_List(6).Par_Value, v_Par_List(7).Par_Value;
ElsIf (v_Par_Count = 8) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value,
v_Par_List(5).Par_Value, v_Par_List(6).Par_Value, v_Par_List(7).Par_Value, v_Par_List(8).Par_Value;
ElsIf (v_Par_Count = 9) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value,
v_Par_List(5).Par_Value, v_Par_List(6).Par_Value, v_Par_List(7).Par_Value, v_Par_List(8).Par_Value,
v_Par_List(9).Par_Value;
ElsIf (v_Par_Count = 10) Then
Open p_Sql For v_Sql
Using v_Par_List(1).Par_Value, v_Par_List(2).Par_Value, v_Par_List(3).Par_Value, v_Par_List(4).Par_Value,
v_Par_List(5).Par_Value, v_Par_List(6).Par_Value, v_Par_List(7).Par_Value, v_Par_List(8).Par_Value,
v_Par_List(9).Par_Value, v_Par_List(10).Par_Value;
ElsIf (v_Par_Count > 10) Then
Raise_Application_Error(-2009, "Количество параметров должно быть меньше 10!");
End If;
Exception
When Others Then
v_Sql_Errm := SubStr(Sqlerrm, 1, 250);
Raise_Application_Error(-2011, "Ошибка открытия курсора (" || v_Sql_Errm || ")!");
End;
End If;
Но данный метод позволяет передавать только до десяти параметров.
Можно ли обойти это ограничение? Если да, то как?
← →
ANB © (2006-11-01 13:58) [1]Почитать про биндовые переменные. Их можно использовать в том числе и в составе динамического SQL. Решение обязательно запостить.
← →
Сатир (2006-11-01 14:38) [2]
> Почитать про биндовые переменные
а где его почитать? и как эти переменные называются в оригинале?
← →
evvcom © (2006-11-01 14:40) [3]Variable binding
← →
Petr V. Abramov © (2006-11-01 18:58) [4]Performing SQL Operations with Native
Dynamic SQL
в книжке PLSQL User"s Guide and Reference
← →
ANB © (2006-11-02 10:50) [5]Обломись. Саша Просторов сказал, что с рефкурсором это не прокатит.
Sanders (18:04) :
Без юзинга вряд ли удастся. Только dbms_sql, но его не передашь на клиента. Можно конечно извращаться через sys_context итп.
← →
k2 © (2006-11-02 18:11) [6]http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:3027089372477
вопрос от 7.02.03 ваш случай
как это делает Том:
http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1288401763279
← →
Sergey Masloff (2006-11-05 00:18) [7]k2 © (02.11.06 18:11) [6]
Ну вот, надо написать Тому что какой-то саша просторов (кто это) его методику извращением назвал.
У нас нечто подобное и без контекста делается но суть та же самая, а я думал ноухау ;-)
← →
ANB © (2006-11-07 11:25) [8]
> как это делает Том:
> http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:
> 1288401763279
Чего то я там только через контекст нашел. но, во первых это не совсем биндовые переменные, во вторых, чего то под моим тестовым юзером на 9-ке установка контекста работать не хочет (грит прав не хватает), хотя я DBA ему дал.
← →
k2 © (2006-11-07 15:34) [9]Sergey Masloff (05.11.06 00:18) [7]
http://www.softwarer.ru/
а ябедничать нехорошо :)
на во-вторых, в процедуру завернуть нужно
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c