Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 配置数据库 » 数据库选项 » 数据库选项简介 » 按字母顺序排列的选项列表

 

post_login_procedure 选项 [数据库]

指定一个结果集中包含消息的过程,这些消息应在用户连接时由应用程序显示。

允许值

字符串

缺省值

post_login_procedure 系统过程

作用域

需要 DBA 权限。

注释

当 post_login_procedure 选项设置为非空字符串的任何值时,应用程序可以 调用该选项指定的过程作为连接过程的一部分,以确定应对用户显示什么消息(如果有)。该选项值应为 owner.function-name 的形式,以防止用户替换函数。

如果设置了此选项,则 Sybase Central 的 SQL Anywhere 插件、Interactive SQL 和 dbisqlc 会调用该过程,并在窗口中显示该过程返回的任何消息。应修改未随 SQL Anywhere 一起提供的其它应用程序,以调用此选项指定的过程并显示消息(如果需要此功能)。

应用程序可能需要显示有关连接的消息的一种情况是,通知用户其口令即将到期(如果实施了口令到期机制)。使用该功能可在用户的口令实际到期之前,在每次用户连接时通知用户,几天后其口令是否会到期。

此选项指定的过程必须返回包含一行或多行和两列的结果集。类型为 VARCHAR(255) 的第一列返回消息文本,如果没有消息,则返回 NULL。类型为 INT 的第二列返回操作类型。允许的操作值如下:

  • 0   显示消息(如果有)。

  • 1   显示消息并提示用户更改口令。

  • 2-99   保留。

  • 100 及更大值   用户定义。

无论操作值为何,SQL Anywhere 插件、dbisql 和 dbisqlc 均显示所有非 NULL 消息。如果操作设置为 1,则 SQL Anywhere 插件和 dbisql(但不是 dbisqlc)提示用户更改口令,然后将新口令设置为用户指定的值。

有关使用 post_login_procedure 并且包括高级口令规则及实现口令到期功能的示例,请参见 "使用口令验证函数"。

另请参见
示例

以下示例使用名为 p_post_login_check 的过程,此过程警告用户其口令即将到期,然后提示用户更改口令。

CREATE PROCEDURE DBA.p_post_login_check( )
RESULT( message_text VARCHAR(255), message_action INT )
BEGIN
  DECLARE message_text        CHAR(255);
  DECLARE message_action     INT;
  
  -- assume the password_about_to_expire variable was 
  -- set by the login procedure
  IF password_about_to_expire = 1 THEN
    SET message_text = 'Your password is about to expire';
    SET message_action = 1;
  ELSE
    SET message_text = NULL;
    SET message_action = 0;
  END IF;
  -- return message (if any) through this result set
  SELECT message_text, message_action;
END;

GRANT EXECUTE ON DBA.p_post_login_check TO PUBLIC;

SET OPTION PUBLIC.post_login_procedure = 'DBA.p_post_login_check';