问题 问答题

[说明]


某大中型电器商场仓库对货物的存取由多台配送车自动化完成,该仓库有多个入口和出口。当空配送车进入该仓库时,从仓库入口处由配送控制系统查询相应电器放置的货架位置(假设每台电器占用唯一的货架位置);当配送车装载货物从出口驶出时,系统将相应的货架位置标记设置为空。
假设实现电器商场仓库系统管理的伪指令如表8-5所示。


根据上述描述,在商场仓库入口处的伪代码程序如下。
x = Get ();
IF x =NULL THEN return 0;
Writ (x,1);
1. 若两辆配送车在不同的入口处同时执行上述代码,则可能会出现什么问题请用100字以内的文字简要说明。

答案

参考答案:(1)storage_rackno
(2) from storage_rack
(3) where isused=0
(4) EXEC SQL CLOSE getblk
(5) Hparkno

解析:
这是一道要求读者掌握2PL协议理论与SQL中的隔离级别,以及嵌入式SQL的编程实践题。
依题意,在用E-SQL语句实现的查询货架位置的函数Get()中,(1)~(3)空缺处需要补充的是游标定义中的查询部分;(4)和(5)空缺处需要补充的是关闭游标和函数返回值部分。函数Get()完整的程序代码如下。
SET TRAMSACTION ISOLATION LEVEL SERIALIZABLE
EXEC SQL DECLARE getblk CURSOR FOR
select storage rackno
trom storage rack
where isused=0;

EXEC SQL OPEN getblk ;
EXEC SQL FETCH getblk INTO :Hparkno; //Hparkno 为已声明的主变量
IF SQLCA.sqlcode = 100 THEN
EXEC SQL CLOSE getblk ; Return NULL;
ELSE
EXEC SQL CLOSE getblk;
return :Hparkno
;
END IF

单项选择题 案例分析题
单项选择题