Я должен написать OCI код для простого запроса, как Select * from emp;
OCI вызова для оператора выбора
Поскольку я не знаю, сколько строк будет возвращено, я не могу заранее выделить мои буфера Таким образом я определяю void **
указатель в то время как я связываю мой выходные буферы.
Идея заключается в том, чтобы вызвать OCIStmtExecute
с iters = 0
так
Для ЗЕЬЕСТА, если Iters отличен от нуля, то определяет, должны быть сделаны для дескриптора. Выполнение выполняет выбор строк в эти предопределенные буферы и предваряет больше строк в зависимости от количества строк предварительной выборки. Если вы не знаете, сколько строк выведет оператор SELECT, установите его равным нулю.
Эта функция возвращает ошибку, если iters = 0 для операторов без SELECT.
После этого я планирую сделать OCIAttrGet(OCI_ATTR_ROW_COUNT)
, чтобы получить числа в строки, возвращаемых оператором выбора, а затем выделить память для выходных буферов, а затем вызвать OCIStmtFetch, указав количество строк, следовательно, вернулся.
Но число строк, которое я получаю, равно 0 каждый раз, даже если есть данные, возвращаемые таблицей.
Есть ли какой-то недостаток с моим подходом? Не могли бы вы указать недостаток