powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Тип данных параметра хранимой процедуры
6 сообщений из 6, страница 1 из 1
Тип данных параметра хранимой процедуры
    #32157293
Виктория
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, какой типа данных нужно дать переменной хранимой процедуры, чтобы получить после вызова этой процедуры массив записей, взятых из базы.
Возможно ли вообще получить после выполнения процедуры что-то типа курсора в качестве переменной?
...
Рейтинг: 0 / 0
Тип данных параметра хранимой процедуры
    #32157297
Guilty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
получить переменную типа ref cursor в клиентской проге вполне реально, в Визул Бэйсике не должно быть проблем, в Дэлфи в использованием АДОкомпонентов не получится, нужен ОДАК, а вот как это в Визуал С++ - не знаю, не делал..
...
Рейтинг: 0 / 0
Тип данных параметра хранимой процедуры
    #32157304
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Виктория

Можно ли узнать подробнее задачу, а то всегда интересовало для чего используют ref cursor
...
Рейтинг: 0 / 0
Тип данных параметра хранимой процедуры
    #32157363
Hardex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nested Tables
...
Рейтинг: 0 / 0
Тип данных параметра хранимой процедуры
    #32157378
Mergen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry за такой пост, забыл откуда это :))
Using Ref Cursors To Return Recordsets
Since Oracle 7.3 REF CURSORS have been available which allow recordsets to be returned from stored procedures, functions and packages. The example below uses a ref cursor to return a subset of the records in the EMP table.

First, a package definition is needed to hold the ref cursor type:
CREATE OR REPLACE PACKAGE Types AS
TYPE cursor_type IS REF CURSOR;
END Types;
/
Next a procedure is defined to use the ref cursor:
CREATE OR REPLACE
PROCEDURE GetEmpRS (p_deptno IN emp.deptno%TYPE,
p_recordset OUT Types.cursor_type) AS
BEGIN
OPEN p_recordset FOR
SELECT ename,
empno,
deptno
FROM emp
WHERE deptno = p_deptno
ORDER BY ename;
END GetEmpRS;
/
The resulting cursor can be referenced from PL/SQL as follows:
SET SERVEROUTPUT ON 1000000
DECLARE
v_cursor Types.cursor_type;
v_ename emp.ename%TYPE;
v_empno emp.empno%TYPE;
v_deptno emp.deptno%TYPE;
BEGIN
GetEmpRS (p_deptno => 30,
p_recordset => v_cursor);

LOOP
FETCH v_cursor
INTO v_ename, v_empno, v_deptno;
EXIT WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_ename || ' | ' || v_empno || ' | ' || v_deptno);
END LOOP;
CLOSE v_cursor;
END;
/
In addition the cursor can be used as an ADO Recordset:
Dim conn, cmd, rs

Set conn = Server.CreateObject("adodb.connection")
conn.Open "DSN=TSH1;UID=scott;PWD=tiger"

Set cmd = Server.CreateObject ("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "GetEmpRS"
cmd.CommandType = 4 'adCmdStoredProc

Dim param1
Set param1 = cmd.CreateParameter ("deptno", adInteger, adParamInput)
cmd.Parameters.Append param1
param1.Value = 30

Set rs = cmd.Execute

Do Until rs.BOF Or rs.EOF
-- Do something
rs.MoveNext
Loop

rs.Close
conn.Close
Set rs = nothing
Set param1 = nothing
Set cmd = nothing
Set conn = nothing
The cursor can also be referenced as a Java ResultSet:
import java.sql.*;
import oracle.jdbc.*;

public class TestResultSet {
public TestResultSet() {
try {
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:oci:@w2k1", "scott", "tiger");
CallableStatement stmt = conn.prepareCall("BEGIN GetEmpRS(?, ?); END;");
stmt.setInt(1, 30); // DEPTNO
stmt.registerOutParameter(2, OracleTypes.CURSOR); //REF CURSOR
stmt.execute();
ResultSet rs = ((OracleCallableStatement)stmt).getCursor(2);
while (rs.next()) {
System.out.println(rs.getString("ename") + ":" + rs.getString("empno") + ":" + rs.getString("deptno"));
}
rs.close();
rs = null;
stmt.close();
stmt = null;
conn.close();
conn = null;
}
catch (SQLException e) {
System.out.println(e.getLocalizedMessage());
}
}

public static void main (String[] args) {
new TestResultSet();
}
}
...
Рейтинг: 0 / 0
Тип данных параметра хранимой процедуры
    #32157841
Виктория
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большущее спасибо!

2 Oracle_Developer
Требуется сформировать выпадающий список в клиентской программе.
Для этого клиентская программа должна вызвать хранимую процедуру с указанием только имени (или псевдонима) требуемой таблицы.
В ответ же клиент должен получить массив записей, содержащихся в этой таблице.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Тип данных параметра хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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