第三章 IRIS 编程简介 - SQL
SQL
IRIS
提供了 SQL
的实现,称为 SQL
。可以在方法和例程中使用 SQL
。
从 ObjectScript
使用 SQL
可以使用以下一种或两种方式从 ObjectScript
执行 SQL
:
- 动态
SQL
(%SQL.Statement
和%SQL.StatementResult
类),如下例所示:
SET myquery = "SELECT TOP 5 Name, Title FROM Sample.Employee ORDER BY Salary"
SET tStatement = ##class(%SQL.Statement).%New()
SET tStatus = tStatement.%Prepare(myquery)
SET rset = tStatement.%Execute()
DO rset.%Display()
WRITE !,"End of data"
可以在 ObjectScript
方法和例程中使用动态 SQL
。
- 嵌入式
SQL
,如下例所示:
&sql(SELECT COUNT(*) INTO :myvar FROM Sample.Employee)
IF SQLCODE<0 {WRITE "SQLCODE error ",SQLCODE," ",%msg QUIT}
ELSEIF SQLCODE=100 {WRITE "Query returns no results" QUIT}
WRITE myvar
第一行是嵌入式 SQL
,它执行 SQL
查询并将值写入名为 myvar
的主变量中。
下一行是普通的ObjectScript
;它只是写入变量 myvar
的值。
可以在 ObjectScript
方法和例程中使用嵌入式 SQL
。
从 Python
使用 SQL
从 Python
使用 SQL
与从 ObjectScript
使用动态 SQL
类似。可以使用以下一种或两种方式从 Python
执行 SQL
:
- 可以直接执行
SQL
查询,如下例所示:
import iris
rset = iris.sql.exec("SELECT * FROM Sample.Employee ORDER BY Salary")
for row in rset:
print(row)
第二行执行 SQL
查询并返回存储在变量 rset
中的结果集。
- 也可以先准备
SQL
查询,然后执行它,如下例所示:
import iris
statement = iris.sql.prepare("SELECT * FROM Sample.Employee ORDER BY Salary")
rset = statement.execute()
for row in rset:
print(row)
在此示例中,第二行返回一个 SQL
查询,该查询在第三行上执行以返回结果集。
可以使用这两种方法之一在 Python
终端或 Python
方法中执行 SQL
查询。