免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3997 | 回复: 12
打印 上一主题 下一主题

请教有关INFORMIX存储过程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-06 21:38 |只看该作者 |倒序浏览
请教:在INFORMIX的存储过程里有没有象ESQL/C里面的sqlca.sqlcode一样的变量可以捕捉SQL语句的错误信息?
用TRACE怎么捕捉SQL语句的错误呢?请各位多多指教。

论坛徽章:
0
2 [报告]
发表于 2006-01-07 10:05 |只看该作者
define sql_err,isam_err int;
        define error_message varchar(254);       
       
        on exception set sql_err,isam_err,error_message
                -- trace sql_err || " "||isam_err||" " || error_message;
        return sql_err,isam_err,error_message;
        end exception;

[ 本帖最后由 wenlq 于 2006-1-7 10:06 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-01-07 10:34 |只看该作者
谢谢wenlq。
还想请教一下,on exception set 是如何捕捉错误信息的?机理是什么?
能不能解释一下 trace sql_err || " "||isam_err||" " || error_message; 这句的意思?
还有函数dbinfo怎么结合sqlca结构使用,比如sqlca.sqlerrd1,sqlca.sqlerrd2,sqlca.sqlerrd3?
请各位多多帮忙。
感激不尽。

论坛徽章:
0
4 [报告]
发表于 2006-01-07 11:22 |只看该作者
你我都是使用者,机理得向IBM人员请教了。
我猜跟那个ec里的whenever sqlerror 类似吧。
说不定就是 在每条sql 语句后跟一条 if (  SQLCODE < 0 ) goto label ;
在机器语言级肯定是比较、条件跳转,哈哈。

trace 语句 后面可以跟 串, 输出到 set debug file to "filename" 语句指定的文件,
是存储过程的重要调试手段。

dbinfo 函数的资料我也不全面 只知道以下一些:
dbinfo('dbspace',partnum) from systables where tabname = 'urtablename' --取表的DBSPACE名
dbinfo('sqlca.sqlerrd1') --- 取最近一个SERIAL值;
dbinfo('sqlca.sqlerrd2') -- 取最近一条SQL语句处理的记录数;
DBINFO( 'UTC_TO_DATETIME', utc_time)  --转换uctime 到 datetime值。
DBINFO("sessionid") -- 取 session id
dbinfo('version','os')  --版本信息
T = Windows NT
U Unix 32 bit running on a 32-bit operating system
H UNIX 32 bit running on a 64-bit os
F UNIX 64 bit running on a 64-bit os
DBINFO('version','full')-- 版本信息
dbinfo('hostname') --机器名

[ 本帖最后由 wenlq 于 2006-1-8 15:47 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-01-07 12:15 |只看该作者
再次谢谢wenlq。
怪我不会问问题,我不应该问什么机理的,即使有解释我也不一定能理解,呵呵。
其实我只是想知道on exception set 后面的变量的值是在什么时候赋上去的?
这些值表示的是什么信息?第一个变量是不是就是esql/c里面的sqlca.sqlcode?第二个和第三个呢?
还有raise exception应该怎么用?

[ 本帖最后由 sqlcode 于 2006-1-7 12:18 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-01-07 21:12 |只看该作者
谁有这方面的资料吗?谢谢。

论坛徽章:
0
7 [报告]
发表于 2006-01-07 21:42 |只看该作者
最好还是不要用procedure,triger,因为那个东西的执行我们不能很好的控制它,不安全,所以还是在程序中用代码来控制。不过在一些安全不是很重要的系统中可以使用的。

论坛徽章:
0
8 [报告]
发表于 2006-01-07 22:06 |只看该作者
正是因为这个原因所以想找到一些能比较全面的捕捉错误信息的方法,
这样即使不能很好的控制也能比较清楚的知道运行的情况。
不过procedure要是能合理的利用的话还是很方便的。

论坛徽章:
0
9 [报告]
发表于 2006-01-08 15:33 |只看该作者
原帖由 sqlcode 于 2006-1-7 21:12 发表
谁有这方面的资料吗?谢谢。

http://www-306.ibm.com/software/ ... ibrary/list4.html#S

Simplified Chinese IBM Informix Guide to SQL: Tutorial

论坛徽章:
0
10 [报告]
发表于 2006-01-09 12:27 |只看该作者
对SQL错误处理的思路终于有点清晰了,还需继续努力啊。谢谢wenlq,谢谢大家。
又有个新问题,在存储过程里怎么导出导入文本啊?unload,load应该怎么用?还是有别的方法?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP