首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 游标问题,有问题,没解决 [已结贴,结贴人:benjiang]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-06-30 17:26:10 楼主
    各位,想问一下这个存储过程如何写.
    表1 test2
    a  b
    表2 test3
    c  d

    test2.a=test3.c

    想将A和C关联的数据B更新到C

    SELECT ::

    update test3 set d=
    (select b from test2
    where a='a2')
    where c='a2'


    我写的存储过程:

    create PROCEDURE dd(P_ID IN NUMBER)
    IS

    CURSOR REMARK IS
    SELECT a
    FROM test2
    WHERE a = P_ID;

    begin

    FOR j in remark loop

    update test3 set d=
    (select b from test2
    where a=j.p_id)
    where c=j.p_id

    end loop;

    end;

    帮忙看下那里有问题..
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • doer_ljy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-30 17:37:501楼 得分:50
    create PROCEDURE dd(P_ID IN NUMBER)
    IS

    CURSOR REMARK IS
    SELECT a,b
    FROM test2
    WHERE a = P_ID;

    begin

    FOR j in remark loop

    update test3 set d= j.b
    where c = j.a;
    end loop;

    end;
    试试。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-30 17:42:172楼 得分:0
    PROCEDURE HAPPY.DD 编译错误

    错误:PLS-00103: ???? "END"?????????
          .(*@%&-+;/atmodremreturnreturning
              <an exponent (**)>andor||
          ?? ";" ???? "END" ????
    行:18
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-30 17:48:383楼 得分:0
    create or replace procedure t(P_ID IN NUMBER) is

    CURSOR REMARK IS
    SELECT a
    FROM test2
    WHERE a = P_ID;

    begin
      FOR j in remark loop

    update test3 set d=
    (select b from test2
    where a=j.a)
    where c=j.a ;

    end loop;
    end t;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • doer_ljy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-30 18:03:584楼 得分:10
    引用 2 楼 benjiang 的回复:
    PROCEDURE HAPPY.DD 编译错误

    错误:PLS-00103: ???? "END"?????????
          .(*@%&-+;/atmodremreturnreturning
              <an exponent (**)>andor ¦ ¦
          ?? ";" ???? "END" ????
    行:18

    不会编译出错吧?刚刚试了一下。
    你这种情况没有必要使用update中的子查询的。
    好好想想,应该很容易实现。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-30 19:02:145楼 得分:0
    我看了你写的SQL,做过测试,不用子查询的话是整列更新的.所以我才想到用子查询.
    另外,我这个存储过程编译能通过,但如何CALL T呢?


    请指教.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • edwinwed
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-30 19:26:516楼 得分:40
    begin
      t(1);
    end;

    select * from test3;

    存储过程的调用本身就是PLSQL语句,不是表达式的一部分来调用的的(函数是)

    最终要看存储过程运行的结果  就要看你的那个存储过程是干什么的,
    这里你更新TEST3,就查查TEST3看变化吧!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fxianxian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-01 08:17:317楼 得分:0
    呵呵
    不錯啊!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-01 09:07:018楼 得分:0
    问题全面解决,结贴送分.多谢大家.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-01 14:11:479楼 得分:0
    package

    里面的存储过程如何调用呢?


    begin
      cc.t(1);
    end;

    不能调用测试.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • edwinwed
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-04 09:39:4910楼 得分:0
    引用 9 楼 benjiang 的回复:
    package

    里面的存储过程如何调用呢?


    begin
      cc.t(1);
    end;

    不能调用测试.


    上面错了

    begin
      t(1);
    end;

    存储过程不属于哪个表!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • edwinwed
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-04 09:42:1011楼 得分:0
    可能我误会你的意思
    要是想调用游标,参量就把它写在一个包里(PACKAGE)
    包是全局的,存储过程和函数是局部的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved