限制数据读取

以下示例中的例程对用户隐藏 SQL 语法,但它要求用户对 customer 表具有 Select 特权。如果要限制用户可以选择的内容,那么将例程编写为能够在以下环境中工作:
  • 您是数据库的 DBA。
  • 用户对数据库具有 Connect 特权。他们对表不具有 Select 特权。
  • 使用 DBA 关键字来创建 SPL 例程(或一组 SPL 例程)。
  • SPL 例程(或一组 SPL 例程)为用户读取表。
如果要让用户只读取客户的名称、地址和电话号码,那么可将此过程修改为如以下示例所示:
CREATE DBA PROCEDURE read_customer(cnum INT)
RETURNING CHAR(15), CHAR(15), CHAR(18);

DEFINE p_lname,p_fname CHAR(15);
DEFINE p_phone CHAR(18);

SELECT fname, lname, phone
      INTO p_fname, p_lname, p_phone
      FROM customer
      WHERE customer_num = cnum;

RETURN p_fname, p_lname, p_phone;

END PROCEDURE;