独立存储过程(m)

# 独立存储过程 本文档中的存储过程涉及到一部分业务逻辑以及对多个表的操作。 ## modify_instrument_status(m(c)) 修改[instruments](doc:nWaGoELh)表中instrument_status字段,如果@instrument_status被修改为2,则还要在[instrument_using_record](doc:oWyEOHZn)中加入一条关于@instrument_id的使用记录 |参数|类型|非空|其他信息| |:---:|:---:|:---:|:---| |order_id|IN int|是|| |instrument_id|IN int|是|| |instrument_status|IN int|是|| |return_code|OUT int|是|| ## fetch_order_requests 获取@lab_id所对应的实验室的所有预约请求。 |参数|类型|非空|其他信息| |:---:|:---:|:---:|:---| |lab_id|IN int|是|| |record_count|OUT int|是|| |返回字段|类型| |:---:|:---:| |user_id|varchar(9)| |user_type|int| |use_date|date| |use_time_range|char(11)| |lab_usage|varchar(100)| ## create_order 创建实验室预约记录。需要在[lab_order_record](doc:MsFy087f)表中插入一条预约记录,然后根据`@instruments`修改`instruments表`中的相应的`instrument_status字段`,最后返回`lab_order_record表`生成的`order_id字段`。 参数instruments是一个可变长度的字符串,表示用户想要借用的所有实验仪器,其内容由许多个仪器的`instrument_serial字段`拼接而成,这个编号是学校数据库中的实验室资产编号,长度为12位或8位,后端会把所有8位的资产编号通过在编号前补`@`的方式来补足12位,于是拼接成一个长度为12的倍数的字符串,例如`YQ2014082321`、`@@@@028a1003`。使用`|`作为分隔符,为了便于使用sql分割,字符串末尾追加一个`|`,例如`YQ2014082321|YQ2014082322|@@@@028a1003|`表示了三个仪器编号。存储过程需要将`@instrument_series`分割成数个长度为12的字串,然后将字串作为`instrument_serial`去进行上文所说的添加记录或修改状态的操作。 |参数|类型|非空|其他信息| |:---:|:---:|:---:|:---| |user_id|IN varchar(9)|是|| |user_type|int|是|| |order_datetime|IN datetime|是|| |use_date|IN date|是|| |use_time_range|IN char(11)|是|(m)| |lab_id|IN int|是|| |lab_usage|IN varchar(100)|是|| |instrument_series|IN varchar(260)|否|(m)| |order_id|OUT int|否|| ## cancel_order(m) 取消预约。将[lab_order_record](doc:MsFy087f)中的记录的`order_status字段`改为4,并将[instruments](doc:nWaGoELh)中的`instrument_status字段`改为0。如果修改之前`order_status字段`为2,还需要到[instrument_using_record](doc:oWyEOHZn)中删除仪器使用记录。 |参数|类型|非空|其他信息| |:---:|:---:|:---:|:---| |order_id|IN int|是|| |return_code|OUT tinyint|否||