XQuery/XQuery SQL 模組
外觀
< XQuery
您想在 XQuery 程式碼中執行 SQL 查詢。
eXistdb 提供了一個用於執行 SQL 查詢的模組。
- 啟用模組
- 配置您的連線字串
- 執行測試查詢
您的第一步是啟用 SQL 模組。為此,您必須從 EXIST_HOME 目錄中的 conf.xml 檔案中取消註釋以下行
<module class="org.exist.xquery.modules.sql.SQLModule"
uri="http://exist-db.org/xquery/sql" />
在 eXist 1.5 中,還有一個未記錄的 Oracle 模組。
<module class="org.exist.xquery.modules.oracle.OracleModule"
uri="http://exist-db.org/xquery/oracle" />
SQL 模組使用 JDBC 進行其資料庫連線,因此對於您想要連線的每種資料庫型別,都需要一個 JDBC 驅動程式。JDBC 驅動程式應放置在 EXIST_HOME/lib/user 中。
完成後,您必須重新啟動伺服器。您現在應該在函式列表中看到額外的 SQL 模組文件,並且在連線函式呼叫中使用的驅動程式類應該被找到。
為了執行查詢,您必須執行兩個步驟
- 獲取到資料庫的連線
- 執行查詢
有五種不同的函式可以獲取到資料庫的連線,但只有一個函式可以執行查詢。
連線字串允許您使用適當的使用者名稱和密碼連線到正確的伺服器。
在最基本的形式中,get-connection 函式的格式如下
sql:get-connection('JavaClass', 'JDBC-Connection-URL')
此格式假設您可以將資料庫的登入名和密碼直接放在 JDBC 連線 URL 中。
如果您無法做到這一點,則帶有使用者名稱和密碼的連線字串的格式為
sql:get-connection('JavaClass', 'JDBC-Connection-URL', 'username', 'password')
請注意,某些系統也會將使用者名稱和密碼放在 JDBC 連線字串中。
例如,在 MySQL 中,字串可能是
sql:get-connection("com.mysql.jdbc.Driver", 'jdbc:mysql:///db1', 'mysql-user-name', 'mysql-password')
在 Oracle 中,字串可能是
sql:get-connection('oracle.jdbc.OracleDriver', 'jdbc:oracle:thin:[USER/PASSWORD]@//[HOST][:PORT]/SERVICE", 'jdbc-connection-string', 'mysql-user-name', 'mysql-password')
let $connection := sql:get-connection("com.mysql.jdbc.Driver", 'jdbc:mysql:///db1', 'mysql-user-name', 'mysql-password')
let $q1 := "select * from table1"
return sql:execute( $connection, $q1, fn:true() )