SAP HANA AFL插件库升级后之前生成的存储过程升级方法(PAL升级方法)
2013-05-04 18:48
393 查看
在AFL库升级之后,之前创建的存储过程需要进行相应的升级,这个时候一般需要重新运行AFL_WRAPPER_GENERATOR。在前面的例子中,我们知道在重新运行该存储过程的时候,因为之前已经生成相应的存储过程,则一定会报错。如何应对这种情况?
之前已生成的实例:/article/4852496.html
SAPHANA提供两种方法:
1.手工删除之前的存储过程及表类型,再重新运行AFL_WRAPPER_GENERATOR。该方法在之前的文章中已有提及:
/article/4852499.html
DROPPROCEDURE_SYS_AFL.PAL_TS_S;
DROPTYPE_SYS_AFL.PAL_TS_S__TT_P1;
DROPTYPE_SYS_AFL.PAL_TS_S__TT_P2;
DROPTYPE_SYS_AFL.PAL_TS_S__TT_P3;
CALLSYSTEM.AFL_WRAPPER_GENERATOR('PAL_TS_S','AFLPAL','SINGLESMOOTH',PAL_TS_SIGNATURE);
2.SAPNote1830239提供解决方法,该文主要从该方法进行探讨
SAPNote1830239具体内容为:
Summary
Symptom
YourunAFL_WRAPPER_GENERATORandgetanerrorlike:
"SAPDBTechJDBC:[423]:liveCacheerror:[423]SYSTEM.AFL_WRAPPER_GENERATOR:line35col1(atpos1718):liveCacheerrorexception:liveCacheerror:registrationfinishedwitherrors,seeindexservertrace"
Andintheindexservertracethereisamessagelike:
"cannotuseduplicateuser-definedtypename-PAL_TS_S__TT_P2:line1col22(atpos21):line1col22(atpos21)"
Otherterms
AFLerror,PAL
ReasonandPrerequisites
YouareusingAFL_WRAPPER_GENERATORtogenerateaproceduretocallaPALApplicationFunction.Theprocedurewasalreadygeneratedbeforeinapreviouscalltothewrappergenerator.Nowyouarefacingduplicates.
ThePALmanualdescribeshowalltablestypesandtheprocedureitselfhavetobedroppedmanuallyinadvance.Butthisstepwasnotperfomed(successfully).
Solution
InsteadofdroppingallrelevanttabletypesandtheproceduremanuallythecounterparttoAFL_WRAPPER_GENERATORcalledAFL_WRAPPER_ERASERcanbeused.
Pleaseproceedasfollows:
1.ConnecttothedatabaseasuserSYSTEMviaHanaStudio.2.Copytheattachedfileafl_wrapper_eraser.txttoasqlwindowandexecuteit.3.Granttheexecutionofafl_wrapper_erasertotherelevantuser:grantexecuteonsystem.afl_wrapper_eraserto...
4.Connectasthisuserandrunsystem.afl_wrapper_eraserfortheprocedurecausingtrouble.
HeaderData
AffectedReleases
Release-Independent
该Note所阐释的方法如下:
1.生成系统存储过程AFL_WRAPPER_ERASER。sql语句如下:
GRANTEXECUTEONSYSTEM.AFL_WRAPPER_ERASERTOUser1;
该方法会删除方法及相应的tabletype。
3.重新运行AFL_WRAPPER_GENERATOR。
实例如下:
CALLSYSTEM.AFL_WRAPPER_ERASER('PAL_TS_S');
CALLSYSTEM.AFL_WRAPPER_GENERATOR('PAL_TS_S','AFLPAL','SINGLESMOOTH',PAL_TS_SIGNATURE);
之前已生成的实例:
SAPHANA提供两种方法:
1.手工删除之前的存储过程及表类型,再重新运行AFL_WRAPPER_GENERATOR。该方法在之前的文章中已有提及:
DROPPROCEDURE_SYS_AFL.PAL_TS_S;
DROPTYPE_SYS_AFL.PAL_TS_S__TT_P1;
DROPTYPE_SYS_AFL.PAL_TS_S__TT_P2;
DROPTYPE_SYS_AFL.PAL_TS_S__TT_P3;
CALLSYSTEM.AFL_WRAPPER_GENERATOR('PAL_TS_S','AFLPAL','SINGLESMOOTH',PAL_TS_SIGNATURE);
2.SAPNote1830239提供解决方法,该文主要从该方法进行探讨
SAPNote1830239具体内容为:
Summary
Symptom
YourunAFL_WRAPPER_GENERATORandgetanerrorlike:
"SAPDBTechJDBC:[423]:liveCacheerror:[423]SYSTEM.AFL_WRAPPER_GENERATOR:line35col1(atpos1718):liveCacheerrorexception:liveCacheerror:registrationfinishedwitherrors,seeindexservertrace"
Andintheindexservertracethereisamessagelike:
"cannotuseduplicateuser-definedtypename-PAL_TS_S__TT_P2:line1col22(atpos21):line1col22(atpos21)"
Otherterms
AFLerror,PAL
ReasonandPrerequisites
YouareusingAFL_WRAPPER_GENERATORtogenerateaproceduretocallaPALApplicationFunction.Theprocedurewasalreadygeneratedbeforeinapreviouscalltothewrappergenerator.Nowyouarefacingduplicates.
ThePALmanualdescribeshowalltablestypesandtheprocedureitselfhavetobedroppedmanuallyinadvance.Butthisstepwasnotperfomed(successfully).
Solution
InsteadofdroppingallrelevanttabletypesandtheproceduremanuallythecounterparttoAFL_WRAPPER_GENERATORcalledAFL_WRAPPER_ERASERcanbeused.
Pleaseproceedasfollows:
1.ConnecttothedatabaseasuserSYSTEMviaHanaStudio.2.Copytheattachedfileafl_wrapper_eraser.txttoasqlwindowandexecuteit.3.Granttheexecutionofafl_wrapper_erasertotherelevantuser:grantexecuteonsystem.afl_wrapper_eraserto...
4.Connectasthisuserandrunsystem.afl_wrapper_eraserfortheprocedurecausingtrouble.
HeaderData
ReleaseStatus: | ReleasedforCustomer |
Releasedon: | 05.04.201311:20:16 |
MasterLanguage: | English |
Priority: | Correctionwithmediumpriority |
Category: | Programerror |
PrimaryComponent: | BC-DB-HDB-AFLSAPHANAApplicationFunctionLibrary |
Release-Independent
该Note所阐释的方法如下:
1.生成系统存储过程AFL_WRAPPER_ERASER。sql语句如下:
CREATEPROCEDUREafl_wrapper_eraser(INprocOrigVARCHAR(100))LANGUAGESQLSCRIPT AS v_numinteger:=0; v_sqlscriptVARCHAR(32767):=''; procVARCHAR(32767):=UPPER(:procOrig); CURSORc_parameter_table_nameFOR SELECTTABLE_NAME FROM"SYS"."TABLES" WHERESCHEMA_NAME='_SYS_AFL' ANDTABLE_NAMElike:proc||'__TT_P%'; BEGIN --proc selectcount(1)intov_numfromSYS.PROCEDURESwhereSCHEMA_NAME='_SYS_AFL'andPROCEDURE_NAME=:proc; if:v_num>0then v_sqlscript:='dropprocedure_SYS_AFL.'||proc; exec:v_sqlscript; endif; --type selectcount(1)intov_numfromSYS.TABLESwhereSCHEMA_NAME='_SYS_AFL'andTABLE_NAMElike:proc||'__TT_P%'; if:v_num>0then v_sqlscript:='droptype_SYS_AFL.'; FORcur_row_detailASc_parameter_table_nameDO v_sqlscript:=:v_sqlscript||cur_row_detail.TABLE_NAME; exec:v_sqlscript; v_sqlscript:='droptype_SYS_AFL.'; ENDFOR; endif; END;
2.如果运行该存储过程的为其他用户,我们需要对其他用户进行授权:
GRANTEXECUTEONSYSTEM.AFL_WRAPPER_ERASERTOUser1;
该方法会删除方法及相应的tabletype。
3.重新运行AFL_WRAPPER_GENERATOR。
实例如下:
CALLSYSTEM.AFL_WRAPPER_ERASER('PAL_TS_S');
CALLSYSTEM.AFL_WRAPPER_GENERATOR('PAL_TS_S','AFLPAL','SINGLESMOOTH',PAL_TS_SIGNATURE);
相关文章推荐
- 利用SQL存储过程生成程序编号的一种方法
- Linq调用存储过程自动生成Int结果集的解决方法
- 利用SQL存储过程生成程序编号的一种方法(转)
- 利用SQL存储过程生成程序编号的一种方法
- pb9.0 5507升级8836过程中出现的问题以及升级后工程运行没有反映的解决方法。
- 动态生成SQL的存储过程,以及调用方法
- SAP UI5上传图片 用XSJS存储在HANA中的方法
- (转)根据表中数据生成insert语句的存储过程(另一种方法)
- Linq调用存储过程自动生成Int结果集的解决方法
- 利用SQL存储过程生成程序编号的一种方法
- 利用SQL存储过程生成程序编号的一种方法
- Chrome有个HTTP请求报文生成插件叫postman,这插件在http服务接口调试时非常实用(Mac OS安装方法)
- SQL Server存储过程中编写事务处理的方法小结
- 执行带参数的存储过程的方法II(相对通用)
- SqlServer数据库将另一个数据的的存储过程复制到本地数据库的方法
- PHP升级到4.3版本之后改变了调用存储过程的一个特性
- 升级Xcode后,之前的插件就失效了,解决方案
- Java调用存储过程时报 The user specified as a definer ('root'@'%') does not exist 解决方法
- T-SQL 存储过程: (修订版) 根据基本表结构及其数据生成 INSERT INTO ... 的 SQL (转)
- IOS小技巧-快速注释插件VVDocumenter(以及升级xcode会失效的解决方法)