动态游标中的分组统计问题

xiongyp 2003-08-21 11:40:35
以下要实现:从表中按不同的字段分组,并得到人数总数.将字段变量代入问号好象不行,输出sqlerrtext为不能打开游标,请教如何解决?

string Emp_sex_var //字段变量
Emp_sex_var = "sex"//性别
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;

integer li_count
string ls_sex

string sqlstatement

sqlstatement = "SELECT ?,count(*) FROM employee GROUP BY ?"

PREPARE SQLSA FROM :sqlstatement ;

OPEN DYNAMIC my_cursor using :Emp_sex_var ;

FETCH my_cursor INTO :ls_sex,:li_count;

CLOSE my_cursor ;
...全文
53 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongyp 2003-08-22
  • 打赏
  • 举报
回复
jdsnhan的完全正确,也向独孤狂客表示感谢。
我是借用pb的帮助中动态sql的第3种例子,哪知不对,如下:
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;

integer Emp_id_var

string Emp_state_var = "MA"

string sqlstatement

sqlstatement = "SELECT emp_id FROM employee "&

+"WHERE emp_state = ?"

PREPARE SQLSA FROM :sqlstatement ;

OPEN DYNAMIC my_cursor using :Emp_state_var ;

FETCH my_cursor INTO :Emp_id_var ;

CLOSE my_cursor ;
先给分,各位如有兴趣能说说为什么不能这样用吗?再次感谢!
polugen 2003-08-21
  • 打赏
  • 举报
回复
OPEN DYNAMIC my_cursor using :Emp_sex_var ;不对
USING后面只能是事物
aty283 2003-08-21
  • 打赏
  • 举报
回复
up
jdsnhan 2003-08-21
  • 打赏
  • 举报
回复
"SELECT ?,count(*) FROM employee GROUP BY ?"
此处你用的变量吗?如果是变量,那应该区分开常量与变量
"select " + 变量 + " from emploee group by " + 变量
另外,如果楼上说的 OPEN DYNAMIC my_cursor using DESCRIPTOR SQLDA;
oracle教案(doc) 1. oracle安装及基本命令 1 1.1 oracle简介 1 1.2 oracle安装 1 1.2.1 常见版本 1 1.2.2 安装: 2 1.2.3 oracle必须启动的服务 2 1.3 oracle常见的第三方工具 4 2. SQL/PLUS 5 2.1 命令行方式 5 2.2 动手实践 9 3. SQL语句 9 3.1 所需要用到的表 9 3.1.1 雇员表(emp) 10 3.1.2 部门表(emp) 10 3.1.3 工资等级表 (salgrade) 11 3.1.4 奖金表 (bonus) 11 3.2 SQL简介 11 3.2.1 SQL简介 11 3.2.2 简单查询语句格式 12 3.2.3 限定查询(where 子句) 17 3.2.4 对查询结果进行排序 ORDER BY 子句 (重点) 24 3.2.5 单行函数 (重点) 26 3.2.6 SQL语句强化训练 39 3.2.7 多表查询 40 3.2.8 组函数及分组统计 (重点) 52 3.2.9 子查询 58 3.2.10 ROWNUM伪列(重点) 63 3.2.11 集合操作 65 3.2.12 连接查询及分组查询强化训练 68 3.3 数据库的更新操作 69 3.3.1 添加数据 69 3.3.2 添加数据的语法 69 3.3.3 修改数据 71 3.3.4 删除数据 71 3.3.5 事务处理 72 3.3.6 查询作业 75 3.4 创建和管理表(重点) 76 3.4.1 数据类型(重点) 76 3.4.2 表的建立(重点) 77 3.4.3 表的删除(删除) 79 3.4.4 表的修改(了解) 79 3.4.5 对表重命名(了解) 81 3.4.6 截断表(了解) 81 3.4.7 思考题: 82 3.5 约束 83 3.5.1 约束的分类: 83 3.5.2 修改约束 93 3.6 建表、约束、查询综合训练 95 3.6.1 题目背景: 96 3.6.2 功能要求: 96 3.6.3 建表 96 3.6.4 数据 97 3.6.5 要求 98 3.7 视图(重点) 98 3.7.1 创建视图的语法: 98 3.7.2 删除视图: 99 3.7.3 完整的视图创建语法: 100 3.7.4 视图对基本表的更新选项 101 3.8 序列 103 3.8.1 创建及使用系列 103 3.8.2 删除序列 108 3.9 同义词 108 3.9.1 创建同义词的语法: 109 3.9.2 删除同义词的语法 109 3.10 oracle表空间及维护 109 3.11 索引 114 3.11.1 索引概述: 114 3.11.2 索引如何建立? 114 3.12 用户管理 114 3.12.1 创建用户的语法: 114 3.13 数据库的备份与恢复(了解) 114 4. 数据库范式设计 114 4.1 第一范式(1NF) 114 4.2 第二范式(2NF) 114 4.3 第三范式(3NF) 114 5. 数据库设计工具(重点) 114 6. 数据库设计分析(重点) 114 6.1 需求: 114 6.2 实现 114 7. PL/SQL编程 114 7.1 基本语法: 114 7.1.1 代码书写风格的规范化: 114 7.2 最简单的语句块 114 7.3 简单的PL/SQL语句块 114 7.4 语句块的组成 114 7.5 Sql/plus的变量 114 7.5.1 在变量声明时需要遵守一些基本的规则: 114 7.5.2 PL/SQL常用的变量类型: 114 7.5.3 变量声明 114 7.5.4 简单变量赋值 114 7.5.5 %type属性 114 7.5.6 %rowtype属性 114 7.5.7 SQL语句在PL/SQL的运用 114 7.6 选择结构 114 7.6.1 格式1: IF_THEN_ELSE语句 114 7.6.2 格式2: IF_THEN_ELSE_IF语句 114 7.7 循环结构 114 7.8 异常处理(了解) 114 7.8.1 异常 114 7.8.2 PL/SQL是如何处理异常的? 114 7.8.3 异常涉及的步骤 114 7.8.4 异常的类型 114 7.9 游标 (重点) 114 7.9.1 什么是游标? 114 7.9.2 游标有什么作用? 114 7.9.3 为什么避免使用游标? 114 7.9.4 Oracle游标的类型? 114 7.9.5 使用游标 114 7.10 存储过程 114 7.10.1 存储过程的基本概念 114 7.10.2 存储过程的建立及执行 114 7.10.3 调用存储过程的方法 114 7.10.4 带参数的存储过程 114 7.10.5 删除存储过程 114 7.11 函数 114 7.11.1 创建函数 114 7.12 触发器 114 7.13 树状结构的存储与展示 114 7.13.1 基本原理 114 7.13.2 实际应用1 114 7.13.3 实际应用2 114 7.13.4 例: 展现emp表的树状结构 114 8. TOAD使用技巧 114

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧