我想知道我是否有办法让BEGIN TRY
ALTER PROCEDURE [dbo].[usp_get_Reports_Parameter_Portfolio]
@StartDate date,
@EndDate date
AS
DECLARE @ReportTable Table(
高于某个程序的参数。
像这样:
RAISERROR
我想要这个的原因是因为我通过 @Controller
@RequestMapping("/client")
public class ClientRest implements GenericRest<Client>{
@Autowired
ClientServices clientServices;
static final Logger logger = Logger.getLogger(ClientRest.class);
@Override
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Status addEntity(@RequestBody Client t) throws Exception {
try {
clientServices.addEntity(t);
return new Status(1, "Client added Successfully !");
} catch (Exception e) {
logger.error( "Client not added Successfully !", e);
return new Status(0, e.toString());
}
}}
引发了自定义错误
每当尝试失败时。
我需要尝试ABOVE插入参数的原因是因为我希望在输入的参数类型错误时显示自定义消息。
答案 0 :(得分:2)
不,这是不可能的。
您必须传递正确的参数类型。 如果需要,可以在存储过程中立即检查参数值:
position: absolute;
此外,您可以将存储过程调用包装在IF DATEDIFF(DAY, GETDATE(), @StartDate) > 100
;THROW 50000, '@StartDate is invalid', 1
- TRY
块中。
答案 1 :(得分:1)
存储过程/函数中的任何代码> <存储过程/函数正确调用后 。因此,您可能希望包含在存储过程/函数中的任何异常处理机制在调用时都不可见,但仅在此类调用成功后才可见。
如果调用是从不同的系统(例如JAVA程序)进行的,则应使用所需的TRY / CATCH对在JAVA中包装存储过程/函数。
如果调用发生在同一个数据库中,则调用代码应包含错误处理部分。