我需要得到一个表的银行的名称,他们的bsb等于给函数的值。下面是我的代码:
CREATE OR REPLACE Function FF(BSB_NUMBER IN BANK.BSB#%TYPE) RETURN SYS_REFCURSOR
IS
MY_CURSOR SYS_REFCURSOR;
BEGIN
OPEN MY_CURSOR for
select * from bank where bank.bsb# = BSB_NUMBER;
return MY_CURSOR;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Error ! There is no such account');
END FF;
/我遇到了这个问题,但没有打印任何内容。感谢任何想法:
SELECT FindBankStaff(012878) FROM BANK;发布于 2014-04-19 16:26:05
不返回游标,返回适当的值。
发布于 2014-04-19 16:37:40
最后,我看到了这个答案,并将其应用到我的问题中:
CREATE OR REPLACE FUNCTION SOME_FUNC_RETURNING_A_CURSOR RETURN SYS_REFCURSOR IS
csrLocal SYS_REFCURSOR;
BEGIN
OPEN csrLocal FOR SELECT NAME, BSB# FROM BANK;
RETURN csrLocal;
END SOME_FUNC_RETURNING_A_CURSOR;
/
DECLARE
aCursor SYS_REFCURSOR;
someVariable VARCHAR2(40);
some2 number;
BEGIN
aCursor := SOME_FUNC_RETURNING_A_CURSOR;
WHILE TRUE LOOP
FETCH aCursor INTO someVariable,some2;
EXIT WHEN aCursor%NOTFOUND;
DBMS_OUTPUT.PUT(someVariable);
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT_LINE(some2);
END LOOP;
COMMIT;
END;
/发布于 2014-04-30 23:22:36
在Toad中有一个执行此操作的选项。
您只需创建一个绑定变量作为引用游标,并调用该过程或函数。流程成功运行后,数据网格将自动填充对象的结果集(在本例中为来自引用游标的记录)。我想,即使在Oracle Sql Developer中,这个特性也已经包含进来了。
如果您使用的是SQL Plus*,那么最好的方法是将一个变量声明为引用游标。执行该块并使用 print 命令打印输出。希望这能帮上忙。
https://stackoverflow.com/questions/23167667
复制相似问题