阅读 61

第六十五章 SQL命令 PURGE CACHED QUERIES

第六十五章 SQL命令 PURGE CACHED QUERIES

删除一个或多个缓存查询。

大纲

PURGE [CACHED] QUERIES PURGE [CACHED] QUERIES BY AGE n PURGE [CACHED] QUERIES BY TABLE table-name PURGE [CACHED] QUERIES BY NAME class-name [, class-name] 复制代码

参数

  • n - 自上次使用缓存查询以来的整数天数,指定为带引号的字符串。

  • table-name - 存在缓存查询的现有表的名称。

表名可以是限定的(schema.table),也可以是非限定的(table)。 非限定表名接受默认模式名。

  • class-name- 缓存的查询类名称或以逗号分隔的缓存查询类名称列表。

缓存的查询类名是区分大小写的。

描述

PURGE CACHED QUERIES命令删除指定范围内定义的缓存查询:

  • PURGE CACHED QUERIES清除当前名称空间中的所有缓存查询。

  • PURGE CACHED QUERIES BY AGE n清除当前名称空间中最近n天内未使用(准备)的所有缓存查询。

指定n值为0将清除当前名称空间中的所有缓存查询。

  • PURGE CACHED QUERIES BY TABLE TABLE -name清除引用指定表的所有缓存查询。

如果查询引用了几个表,则会生成一个缓存查询,并为每个表列出一个查询。 对这些表中的任何一个发出PURGE CACHED QUERIES BY TABLE将从所有这些表中清除这个缓存的查询。

  • PURGE [CACHED] QUERIES BY NAME class- NAME清除由缓存查询类名称指定的缓存查询。

可以将多个缓存查询指定为逗号分隔的列表。 列出的缓存查询可以引用不同的表,但所有表都必须在当前名称空间内。 现金查询名称是区分大小写的。

CACHED关键字是可选的。

如果指定的类名不存在,或者指定的字母大小写不正确,则跳过该类名,命令继续清除列表中的下一个缓存查询; 对于无效的类名,不会执行任何操作,也不会生成任何错误。 如果指定的表没有任何关联的缓存查询,或者该表不存在,则不执行任何操作,也不会产生错误。

示例

下面的示例清除指定名称的缓存查询:

PURGE CACHED QUERIES BY NAME %sqlcq.USER.cls2 复制代码

下面的示例清除所有过去两天内没有使用过的缓存查询:

PURGE CACHED QUERIES BY AGE "2" 复制代码

打开游标。

大纲

OPEN cursor-name 复制代码

参数

  • cursor-name - 游标的名称,已经声明过了。

游标名称是在DECLARE语句中指定的。 游标名称区分大小写。

描述

OPEN语句根据游标的DECLARE语句中指定的参数打开游标。 一旦打开,就可以获取游标。 打开的游标必须关闭。

  • 试图打开未声明的游标会出现SQLCODE -52错误。

  • 试图打开已经打开的游标会导致SQLCODE -101错误。

  • 试图获取或关闭未打开的游标将导致SQLCODE -102错误。

成功的OPEN设置SQLCODE = 0,即使结果集是空的。

作为SQL语句,这只在嵌入式SQL中支持。 通过ODBC使用ODBC API支持等价的操作。

示例

下面的嵌入式SQL示例显示了一个正在打开和关闭的游标(名为EmpCursor):

ClassMethod Open() { s name = "LastName,FirstName",state = "##" &sql( DECLARE EmpCursorO CURSOR FOR  SELECT Name, Home_State INTO :name, :state FROM Sample.Person WHERE Home_State %STARTSWITH 'A' ) w !,"BEFORE: Name=",name," State=",state  &sql(OPEN EmpCursorO) if SQLCODE '= 0 {  w "打开错误: ",SQLCODE     q  } n %ROWCOUNT,%ROWID for {  &sql(FETCH EmpCursorO) q:SQLCODE   w !,"DURING: Name=",name," State=",state  } w !,"FETCH status SQLCODE=",SQLCODE w !,"获取的行数 = ",%ROWCOUNT &sql(CLOSE EmpCursorO) w !,"AFTER: Name=",name," State=",state } 复制代码

DHC-APP>d ##class(PHA.TEST.SQLCommand).Open()   BEFORE: Name=LastName,FirstName State=## DURING: Name=Quixote,Terry J. State=AR DURING: Name=Xerxes,Angelo P. State=AL DURING: Name=Gore,Alfred M. State=AZ DURING: Name=Ahmed,Elmo X. State=AZ DURING: Name=Press,Juanita Q. State=AZ DURING: Name=DeLillo,Olga A. State=AR DURING: Name=Klein,Richard K. State=AL DURING: Name=Lopez,Ralph W. State=AZ DURING: Name=Yu,Edward Y. State=AR DURING: Name=Underman,Maria P. State=AL DURING: Name=Vanzetti,Alexandra O. State=AL DURING: Name=Koivu,Joshua J. State=AR FETCH status SQLCODE=100 获取的行数 = 12 AFTER: Name=Koivu,Joshua J. State=OH


作者:Cache技术分享
链接:https://juejin.cn/post/7026506128745824269


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐