Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 SQL-запрос с параметром  [new]
moroz11
Member

Откуда:
Сообщений: 192
У меня проблема.Помогите,кто может с запросом.
Я пишу в C++BUILDER 6.Обращаюсь к серверу ORACL,проверяю наличие необходимой таблицы с именем 'KK'+2 знака месяца+2 знака года.Например, имя таблицЫ 'KK0507'.
Это имя может МЕНЯТЬСЯ В ЗАВИСИМОСТИ от выбранного месяца и года.
Проблема-значение параметра этого не передается.

ntabl="KK"+AnsiString(strMonth)+AnsiString(strYear2); //имя таблицы ....

ADOQuery1->SQL->Text = "select count(table_name) tCount from user_catalog where table_type='TABLE' and (table_name =:ntabl))";

в ОТЛАДЧИКЕ,ЕСЛИ посмотреть ,то в TEXT содержится ввесь запрос как он написан,а значение
ntabl не передается.
Благодарю всех,кто поможет.
1 июн 07, 10:27    [4216209]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос с параметром  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
А почему Вы считаете, что эта тема для форума Оракл?

> а значение ntabl не передается.
где видим?

может имело бы смысл проверять в user_tables? :)
1 июн 07, 10:33    [4216253]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос с параметром  [new]
......................
Guest
moroz11
У меня проблема.Помогите,кто может с запросом.
Я пишу в C++BUILDER 6.Обращаюсь к серверу ORACL,проверяю наличие необходимой таблицы с именем 'KK'+2 знака месяца+2 знака года.Например, имя таблицЫ 'KK0507'.
Это имя может МЕНЯТЬСЯ В ЗАВИСИМОСТИ от выбранного месяца и года.
Проблема-значение параметра этого не передается.

ntabl="KK"+AnsiString(strMonth)+AnsiString(strYear2); //имя таблицы ....

ADOQuery1->SQL->Text = "select count(table_name) tCount from user_catalog where table_type='TABLE' and (table_name =:ntabl))";

в ОТЛАДЧИКЕ,ЕСЛИ посмотреть ,то в TEXT содержится ввесь запрос как он написан,а значение
ntabl не передается.
Благодарю всех,кто поможет.


чего-нибудь такого не хватает? не знаю синтаксиса

ADOQuery1->SQL->parameters[0] = ntabl;
1 июн 07, 10:34    [4216260]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос с параметром  [new]
Alexus12
Member

Откуда:
Сообщений: 2868
вам нужно найти метод ADOQuery1.parameters.append и добавить им предварительно созданный параметр с уже присвоенным значением,
см как пример вызов на VB процедуры с параметром:

Public Sub ExecuteSP(strProcName As String, varParams() As Variant)
'основная процедура асинхронного запуска хранимых процедур
'varParams = попарное указание "значение параметра, тип параметра As ADODB.DataTypeEnum"
'тип параметра: adNumeric , adDate, adVarChar

On Error GoTo err_ExecuteSP

Dim j As Integer, parADO As ADODB.Parameter

If UBound(varParams()) Mod 2 = 0 Then
'нечетное кол-во параметров - ошибка
    Status = 4
Else

           Set cmdADO = New ADODB.Command

           With cmdADO
             .ActiveConnection = conADO
             .CommandText = strProcName
             .CommandType = adCmdStoredProc
             
             
            If UBound(varParams()) > -1 Then 'если указаны параметры - добавить
                For j = 0 To UBound(varParams()) - 1 Step 2
                    Set parADO = .CreateParameter(, varParams(j + 1), adParamInput, , varParams(j))
                        If varParams(j + 1) = adVarChar Then
                            'указать длину строкового параметра
                            parADO.Size = 255
                        End If
                    .Parameters.Append parADO
                    Set parADO = Nothing
                Next
            End If
          
          
          End With
          
          
      cmdADO.Execute , , adAsyncExecute 'запусить на асинхр и смотреть периодически IsExecutingSP

End If

ext_ExecuteSP:
Exit Sub

err_ExecuteSP:
Status = 3
StatusMessage = "ExecuteSP:" & ReadErrText()
Resume ext_ExecuteSP
 
End Sub
1 июн 07, 13:04    [4217744]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить