CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

Oracle编程问题(5)

楼主Dsoul(由MSSql弱智到Oracle弱智)2002-02-04 10:05:42 在 其他数据库开发 / SQL Anywhere Studio 提问

如果使用类似:  
    N_CID   :=   DBMS_SQL.OPEN_CURSOR;  
    DBMS_SQL.PARSE(N_CID,   v_sqlcode,   DBMS_SQL.V7);  
    DBMS_SQL.CLOSE_CURSOR(N_CID);  
  这样的方法来执行动态sql语句,那如何得到结果呢?  
  比如,我想知道select   count(*)   from   tname的结果,  
  但使用   select   count(*)   into   v_sum   from   tname这种写法似乎不太对.  
  有没有好的方法呢?  
  (我的目的,在SQL   server可以这样来描述:   if   exists(select   *   from   tname   where   col=v_col)   ...) 问题点数:90、回复次数:7Top

1 楼alldog(芸芸众生)回复于 2002-02-04 10:43:16 得分 10

可以这样:  
  select   *   from   tname   where   col=v_col;  
  if   sql%RowCount   >0   then........  
  这是oracle里得写法,sql   server里应该差不多把  
   
  Top

2 楼flowerofwind(现实很残酷)回复于 2002-02-04 10:46:28 得分 5

DBMS_SQL.PARSE(N_CID,   'select   count(*)   into   v_sum   from   tname',   DBMS_SQL.V7);这样写没什么不可以的  
  如果你是delete,update   ,Insert等语句可以这样  
  rows_processed   INTEGER;  
  rows_processed:=DBMS_SQL.EXECUTE(N_CID);Top

3 楼green_girl(无名的裘德)回复于 2002-02-04 23:42:13 得分 0

去买一本sql的书籍,学一下Top

4 楼jhc(老猫)回复于 2002-02-05 10:37:53 得分 20

DBMS_SQL.PARSE(N_CID,   'select   count(*)   into   v_sum   from   tname',   DBMS_SQL.V7);  
  这样写法不对的。应该  
  DBMS_SQL.PARSE(N_CID,   'select   count(*)   v_sum   from   tname',   DBMS_SQL.V7);  
  然后用dbms_sql.define_column定义列,用EXECUTE_AND_FETCH执行并提取记录  
  用VARIABLE_VALUE取得字段值  
   
  Top

5 楼rabbit(Mail_Man)回复于 2002-02-05 11:58:36 得分 10

为什么不使用   execute   immediate   'sql'   语法,简单多了  
  也可以将查询结果放入变量中,好像是这样  
  execute   immediate   'select   count(*)   from   tab'   into   v_count;  
  你试一试吧,我在用WEBDB写HTML页面时,就是用这种方法,判断总的记录数的。  
  好像是这样吧   :)Top

6 楼xinpingf(白开心)回复于 2002-02-05 19:38:08 得分 45

给你个例子看看:  
      FUNCTION   GET_DSQL_NUMBER(V_SQL   IN   VARCHAR2)   RETURN   NUMBER   IS  
          N_CID INTEGER;  
          N_RET INTEGER;  
          N_NR NUMBER;  
      BEGIN  
          N_CID   :=   DBMS_SQL.OPEN_CURSOR;  
          DBMS_SQL.PARSE(N_CID,   V_SQL,   DBMS_SQL.V7);  
          DBMS_SQL.DEFINE_COLUMN(N_CID,   1,   N_NR);  
          N_RET   :=   DBMS_SQL.EXECUTE(N_CID);  
          IF   DBMS_SQL.FETCH_ROWS   (N_CID)   >0   THEN  
                DBMS_SQL.COLUMN_VALUE(N_CID,1,N_NR);  
          END   IF;  
          DBMS_SQL.CLOSE_CURSOR(N_CID);  
          RETURN   N_NR;  
      EXCEPTION  
                WHEN   OTHERS   THEN  
                DBMS_SQL.CLOSE_CURSOR(N_CID);  
                RETURN   NULL;  
      END;  
  Top

7 楼Dsoul(由MSSql弱智到Oracle弱智)回复于 2002-02-06 09:27:08 得分 0

大家都很热情的帮助我.谢谢.Top

相关问题

  • Oracle编程问题
  • Oracle编程问题(2)
  • Oracle编程问题(3)
  • Oracle编程问题(4)
  • unix 下的oracle数据库编程
  • 菜鸟级问题!如何VC编程访问Oracle数据库。
  • 关于delphi编程连接Oracle数据库的问题?
  • 关于oracle面向对象编程的几个疑问?
  • 关于多线程Oracle数据库编程的问题!急!
  • 刚开始接触oracle和VC编程,大人给推荐一下VC的oracle数据库编程书籍吧。给大家拜早年。

关键词

  • dbms
  • sql
  • cid
  • 写法
  • parse
  • nr
  • cursor
  • col
  • sum
  • execute

得分解答快速导航

  • 帖主:Dsoul
  • alldog
  • flowerofwind
  • jhc
  • rabbit
  • xinpingf

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo