关于proc的多线程

[复制链接]
查看11 | 回复4 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
在proc中,有多线程的标识
sql exec enable thread (好象是这么写吧)
这条语句有何用处??
我的程序使用线程
如果是C,则可以用它提供的context
如果是C++,每个类实体都将一个链接封装在内,真接调用类实体就行了,还要context做什么。
不知那位高手能给解释一下

回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
1.EXEC SQL ENABLE THREADS 是用来初始化多线程的环境。
2."如果是C,则可以用它提供的context "这条语句根本不能提供什么context,我想你说的是sql_context.
3."如果是C++,每个类实体都将一个链接封装在内,真接调用类实体就行了,还要context做什么."这句话更是说的不知所云了,你封装什么啊,oracle的多线程程序第一个麻烦就是连接oracle的问题,要么在线程内连接,但如果线程很多的话连接成本就太高,所以才建立多个连接的runtime context,这样在线程内只用取得以有的连接就可以了。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
首先谢谢你的解答,可能我没把事情说清楚
举个例子:
5个连接,可以用oracle的sql_context
用类封装,每个类实体连oracle一次,使用5个。
两者有什么差别????当要进行数据库操作时,都要申请数据库资源,使用sql_context,和使用类实体,是不是一样
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
第一.class的instance是instance和sql_context与数据库的连接是没有什么关系。
第二:sql_context只是代表对应于数据的一个连接,当你拥有一个sql_context后你就拥有了一个对应于数据库的连接。你把他封装的类中当然可以。这个sql_context是类的一个成员变量而已,但它对应于数据库连接这点没变。但注意在通过你的class instance获得数据库连接是要做好对instance的保护。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
在proc中,sql定义的语句是不是也区分为局部变量和全局变量。
如我在主函数中定义一个cursor,在其调用的子函数中是否能用这个cursor.
如果区分的话,则每个类的Instance作一个连接,因此可以不用sql_context表示多个连接。
对sql_context或者对类的instance都需要进行管理!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行