如何从程序中单独发送raise_application_error
消息?
ORA-20343: ERROR - FIRST_NAME IS MISSING and LAST_NAME IS MISSING
ORA-06512: at "quality.pkg_quality_check", line 113
ORA-06512: at line 28
我只想发送错误消息的第一行。如何避免消息的下两行?
提前致谢。
答案 0 :(得分:0)
我曾经在C#中广泛地这样做,并且总是更容易做,因为OldProgrammer建议并且只是捕获OracleException,然后解析出有趣的消息跟踪,而不是弄乱像DBMS_PIPE.PUT_MESSAGE将冗长的错误消息发送回客户端...
我没有任何旧代码,但它是这样的:
try{
//code here that calls oracle, could explode
}catch(System.Data.OracleException oex){
string[] bits = oex.Message.Split('\n');
if(bits.Length < 0 && bits[0].Contains(':'))
MessageBox.Show(bits[0].Substring(bits[0].IndexOf(':') + 2));
else
MessageBox.Show(oex.Message);
}
我还记得你可以通过a numerical argument to RAISE_APPLICATION_ERROR它会改变OracleException的.Code
属性,这可以用来在前端放置好消息:
switch(oex.Code){
case 123456:
MessageBox.Show("First name is too long");
break;
case 234567:
MessageBox.Show("Last name is too long");
break;
...
}
请记住,如果您使用OracleClient数据访问库而不是Microsoft的数据访问库,那么表示/属性命名等可能会略有不同(我只使用过MS,而且自编写代码以来至少已有8年了在c#/ oracle对中如果某些答案有点模糊,请道歉