免费注册 查看新帖 |

Chinaunix

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

关于触发器的初级问题,请用过的大虾指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-18 17:23 |只看该作者 |倒序浏览
我想对一个物理文件加上一个更新触发器,触发执行一个没有关联意义的程序.
(没有用过触发器,想试试如何使用)
但是当调用一个对文件纪录进行更新的程序时,却出现CPF502B错误,然后我试着改了一些触发器添加时候的参数,比如TRG,ALWREPCHG,THDSAFE这几
个,还是没有调用被触发的程序,错误信息为RPG1299.

TRGTIME是*BEFORE或者*AFTER的时候同样的情况。

论坛徽章:
0
2 [报告]
发表于 2004-06-19 00:33 |只看该作者

关于触发器的初级问题,请用过的大虾指教

你的触发器有问题,不是随便拿个程序就能当触发器的

论坛徽章:
0
3 [报告]
发表于 2004-06-19 09:10 |只看该作者

关于触发器的初级问题,请用过的大虾指教

对PF的table建立触发器常见有2种途径:

1。OS/400命令行:
     ADDPFTRG FILE(Library/File) TRGTIME(*BEFORE/*AFTER)
     TRGEVENT(*INSERT/*UPDATE/*DELETE) PGM(Library/PGM)


2。Navigator下:
     主机名→数据库→库 ,然后用“鼠标右键”点击要建触发器的表的属性,  在属性菜单中选中“触发器”一栏, 并选择具体类别的触发器,并用"Lib name/PGM name"的格式填写触发器名至相应的触发器类别.

请先确认以上步骤是否正确。

论坛徽章:
0
4 [报告]
发表于 2004-06-19 10:08 |只看该作者

关于触发器的初级问题,请用过的大虾指教

RPG1299错误代码完整信息呢?
可以把SPLF贴出来呀

论坛徽章:
0
5 [报告]
发表于 2004-06-29 16:11 |只看该作者

关于触发器的初级问题,请用过的大虾指教

原帖由 "qm" 发表:
我想对一个物理文件加上一个更新触发器,触发执行一个没有关联意义的程序.
(没有用过触发器,想试试如何使用)
但是当调用一个对文件纪录进行更新的程序时,却出现CPF502B错误,然后我试着改了一些触发器添加时候..........


建议你使用UPDDTA命令对文件进行更新,看是不是能正常触发TRIGGER。

论坛徽章:
0
6 [报告]
发表于 2004-06-29 16:24 |只看该作者

关于触发器的初级问题,请用过的大虾指教

原帖由 "qm" 发表:
我想对一个物理文件加上一个更新触发器,触发执行一个没有关联意义的程序.
(没有用过触发器,想试试如何使用)
但是当调用一个对文件纪录进行更新的程序时,却出现CPF502B错误,然后我试着改了一些触发器添加时候..........


我做过的一点经验:
系统对BEFORE TRIGGER的一些限制:
·        Statements not allowed in a trigger program are CONNECT, SET CONNECTION, RELEASE, DISCONNECT, and SET RESULT SETS.
·        RUNSQLSTM is not allowed in a trigger program.
·        COMMIT and ROLLBACK are not allowed in a trigger program if the trigger program is running in the same activation group as the triggering program. COMMIT and ROLLBACK are not allowed in an SQL trigger.
·        ALTER TABLE is not allowed in a trigger program when commitment control is active.
·        Statements not allowed in a stored procedure or user-defined function that is running on a remote application server are CONNECT, SET CONNECTION, RELEASE, DISCONNECT, COMMIT, ROLLBACK and SET TRANSACTION.
·        Statements not allowed in an SQL BEFORE trigger are INSERT, UPDATE, DELETE, ALTER TABLE, COMMENT ON, CREATE, DROP, GRANT, LABEL ON, RENAME, and REVOKE.
·        The RETURN statement is not allowed in an SQL trigger.
·        Statements not allowed in a secondary thread are CREATE TRIGGER, CREATE FUNCTION (SQL), and CREATE PROCEDURE (SQL).

下面是ACTIVATION TIME为BEFORE时,

1.JPG (34.22 KB, 下载次数: 48)

1.JPG

论坛徽章:
0
7 [报告]
发表于 2004-06-29 16:25 |只看该作者

关于触发器的初级问题,请用过的大虾指教

如图

2.JPG (35.01 KB, 下载次数: 58)

2.JPG

论坛徽章:
0
8 [报告]
发表于 2004-06-29 16:26 |只看该作者

关于触发器的初级问题,请用过的大虾指教

如图

3.JPG (43.11 KB, 下载次数: 57)

3.JPG

论坛徽章:
0
9 [报告]
发表于 2004-06-30 09:50 |只看该作者

关于触发器的初级问题,请用过的大虾指教

TO  xuguopeng:
请教具体有些什么要求?或者置顶的帖子里面有没有哪本里面有这方面的信息?

to  qingzhou:
触发器是通过命令行加入的,跟你说的一样,这个应该是没有问题。

to   fzrxh:
关于RPG1299的详细信息:

原因--メッセージ RPG1299 が RPG0099 より大きい場合( RPG0100 からRPG9999 の間)には,プログラム test001 がエラーで終了しました。そうでない場合には,プログラマー定義のエラー・サブルーチンによりプログラムが取り消され
  ます。詳細については,前にリストされたメッセージを参照してください。      
回復手順--メッセージで示されたエラーを訂正するか,あるいはアプリケーション
担当者に連絡してください。               
其中test001为对文件进行添加更新纪录的程序,

大意是:信息RPG1299在比RPG0099大的场合(从RPG0100到RPG9999中间),程序TEST001由于错误而终止。不是那样的场合的时候,由于程序员定义的错误子程序,程序被取消。详细情况,见前一个错误信息。         

而这个错误的前一个错误信息就是CPF502B,其信息如下:

メッセージ . . :    トリガー・プログラムでエラーが起こった。               
原因--データベースの挿入,更新,削除,または読み取り操作の結果として呼び出されたトリガー・プログラムが正常に実行されませんでした。エラーを判別するた
めには,ジョブ・ログ中の前のメッセージを参照してください。ライブラリーTST001LIB タイプ *SYS のトリガー CLEAR でのエラー・コードは 2 です。次のように,エラーの原因となったトリガーを判別するために,このエラー・コードを使用することができます。                                                   
   1 -- *BEFORE *INSERT トリガー                                            
     2 -- *AFTER *INSERT トリガー                                             
     3 -- *BEFORE *UPDATE トリガー                                            
     4 -- *AFTER *UPDATE トリガー                                             
     5 -- *BEFORE *DELETE トリガー
   6 -- *AFTER *DELETE トリガー   
   7 -- *READ トリガー                                                      
回復手順--トリガー・プログラムのエラーを訂正してください。その後で要求をや
  り直してくだい。                                                        
メッセージに応答するための選択可能な項目 :                                 
C -- 要求が取り消されます。
I -- 要求が無視されます。
                                                                                  大概说是因为触发器程序没有被正常执行。要判别错误,看JOBLOG中的前一条信息。TST001LIB 类型 *SYS の触发器CLEAR的错误代码是2。从这个可以判断错误的原因。

但是从这个代码只是知道了触发器加的时候的情况。而且在这个错误信息之前JOBLOG中没有别的错误信息。



to       icbcodc :
我这个试验用的触发器程序就只有一行DSPLY的东西,肯定不会有系统对BEFORE TRIGGER的一些限制  的内容。

谢谢大家帮忙!欢迎继续关注菜鸟的学习过程!

论坛徽章:
0
10 [报告]
发表于 2004-06-30 09:58 |只看该作者

关于触发器的初级问题,请用过的大虾指教

qm同志:关于RPG1299的详细信息日文大家如何看得清楚呀?你先转到中文仿真登陆后用汉语或者英语表示吧。     
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP