在select语句中显示%ROWCOUNT值

use*_*097 2 intersystems-cache intersystems-cache-studio

如何%ROWCOUNT在SQL语句中显示结果.

Select top 10 * from myTable.
Run Code Online (Sandbox Code Playgroud)

我希望结果为rowCount结果集中返回的每一行都有一个

防爆

+----------+--------+---------+
|rowNumber |Column1 |Column2  |
+----------+--------+---------+
|1         |A       |B        |
|2         |C       |D        |
+----------+--------+---------+
Run Code Online (Sandbox Code Playgroud)

DAi*_*Mor 5

没有任何简单的方法可以做到这一点.您可以使用此功能添加Sql Procedure并在SQL语句中使用它.例如,课程:

Class Sample.Utils Extends %RegisteredObject
{

ClassMethod RowNumber(Args...) As %Integer [ SqlProc, SqlName = "ROW_NUMBER" ]
{
  quit $increment(%rownumber)
}

}
Run Code Online (Sandbox Code Playgroud)

然后,您可以这样使用它:

SELECT TOP 10 Sample.ROW_NUMBER(id) rowNumber, id,name,dob 
FROM sample.person 
ORDER BY ID desc
Run Code Online (Sandbox Code Playgroud)

你会得到类似下面的东西

+-----------+-------+-------------------+-----------+
|rowNumber  |ID     |Name               |DOB        |
+-----------+-------+-------------------+-----------+
|1          |200    |Quigley,Neil I.    |12/25/1999 |
|2          |199    |Zevon,Imelda U.    |04/22/1955 |
|3          |198    |O'Brien,Frances I. |12/03/1944 |
|4          |197    |Avery,Bart K.      |08/20/1933 |
|5          |196    |Ingleman,Angelo F. |04/14/1958 |
|6          |195    |Quilty,Frances O.  |09/12/2012 |
|7          |194    |Avery,Susan N.     |05/09/1935 |
|8          |193    |Hanson,Violet L.   |05/01/1973 |
|9          |192    |Zemaitis,Andrew H. |03/07/1924 |
|10         |191    |Presley,Liza N.    |12/27/1978 |
+-----------+-------+-------------------+-----------+
Run Code Online (Sandbox Code Playgroud)