zhengyutong 2009-09-12 10:13
浏览 201
已采纳

如何使用JDBC调用输出参数为游标的Oracle存储过程

表结构(保存邮编与地址信息):

create table T_zipCode (
    zipcode varchar2(6) not null primary key, 
    address varchar2(100) not null 
); 

 
要求:建立一个存储过程,该存储过程需要有一个输入参数和一个输出参数,输入参数为查询条件(与address列模糊查询),输出参数为结果集游标。

本人刚学习Oracle,尝试几次均告失败,肯请各位大牛帮助。

 


问题补充:
我这样写的,报ORA-06550错误。
建package:

CREATE OR REPLACE PACKAGE ZIP_PACKAGE AS
TYPE ZIPCODE_CURSOR_TYPE IS REF T_ZIPCODE;
END ZIP_PACKAGE;


建procedure:

CREATE OR REPLACE PROCEDURE
SP_FMS_COM_GetZipCodeRows(PARAM_ADDRESS IN VARCHAR2, ZIP_CODE_CURSOR OUT ZIP_PACKAGE.ZIPCODE_CURSOR_TYPE) IS
strSQL varchar2(1024);
BEGIN
strSQL := 'SELECT ZIPCODE, ADDRESS FROM T_ZIPCODE WHERE ADDRESS LIKE ''%:PARAM_ADDRESS%''';
OPEN ZIP_CODE_CURSOR FOR strSQL USING PARAM_ADDRESS;
END SP_FMS_COM_GetZipCodeRows;
  • 写回答

3条回答 默认 最新

  • 霹雳火-piliskys 2009-09-12 20:34
    关注

    第一步:建立一个游标
    CREATE OR REPLACE PACKAGE TYPES AS
    TYPE BJ _CURSOR IS REF CURSOR;
    END;

    第二步:创建存储过程
    CREATE OR REPLACE PROCEDURE BJ_TEST_PROC
    (
    V_TEMP OUT TYPES.BJ_CURSOR,
    PID IN VARCHAR
    )
    AS
    BEGIN
    OPEN V_TEMP FOR SELECT NAME FROM TEST WHERE ID = PID;
    END BJ_TEST_PROC;
    //存储过程要用到的表
    create table TEST
    (
    ID VARCHAR2(10),
    NAME VARCHAR2(10)
    )
    调用就不用说了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?