【正确答案】这两段程序除了WHERE语句后的值不同以外,其他均一样。对于程序(1),当A=1时,返回了2行记录,对于程序(2),当A=2时,返回了1行记录。对于变量X而言,只能接受一个值,所以,程序2执行不报错,程序(1)执行报错:ORA-01422:exact fetch returns more than requested number of rows。
对于程序(1)有两种修改方法,第一种就是将“SELECT B INTO X FROM SERV WHERE A=1;”修改为“SELECT DISTINCT B INTO X FROM SERV WHERE A=1;”。第二种方法就是返回集合类型,修改后的程序块如下:
