> For the complete documentation index, see [llms.txt](https://docs.postgresql.tw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.postgresql.tw/client-interfaces/ecpg/ecpg-sql-commands/ecpg-sql-declare.md).

# DECLARE

### DECLARE

DECLARE — 定義游標

### 語法

```

DECLARE cursor_name [ BINARY ] [ ASENSITIVE | INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR prepared_name
DECLARE cursor_name [ BINARY ] [ ASENSITIVE | INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR query
```

### 說明

`DECLARE` 宣告游標，以走訪備妥陳述式的結果集。此命令與直接 SQL 命令 `DECLARE` 的語意稍有不同：後者會執行查詢並準備結果集以供擷取；此嵌入式 SQL 命令只會宣告一個名稱作為走訪查詢結果集的「迴圈變數」，實際執行會在以 `OPEN` 命令開啟游標時發生。

### 參數

*`cursor_name`* [#](#ECPG-SQL-DECLARE-CURSOR-NAME) : 游標名稱，區分大小寫。可以是 SQL 識別字或主機變數。

*`prepared_name`* [#](#ECPG-SQL-DECLARE-PREPARED-NAME) : 備妥查詢的名稱，可以是 SQL 識別字或主機變數。

*`query`* [#](#ECPG-SQL-DECLARE-QUERY) : 提供游標要傳回資料列的 [SELECT](/reference/sql-commands/sql-select.md) 或 [VALUES](/reference/sql-commands/sql-values.md) 命令。

游標選項的意義請參閱 [DECLARE](/reference/sql-commands/sql-declare.md)。

### 範例

以下範例為查詢宣告游標：

```

EXEC SQL DECLARE C CURSOR FOR SELECT * FROM My_Table;
EXEC SQL DECLARE C CURSOR FOR SELECT Item1 FROM T;
EXEC SQL DECLARE cur1 CURSOR FOR SELECT version();
```

以下範例為備妥陳述式宣告游標：

```

EXEC SQL PREPARE stmt1 AS SELECT version();
EXEC SQL DECLARE cur1 CURSOR FOR stmt1;
```

### 相容性

SQL 標準規定了 `DECLARE`。

### 另請參閱

[OPEN](/client-interfaces/ecpg/ecpg-sql-commands/ecpg-sql-open.md), [CLOSE](/reference/sql-commands/sql-close.md), [DECLARE](/reference/sql-commands/sql-declare.md)

***

原文：[PostgreSQL 18.6 Documentation](https://www.postgresql.org/docs/18/ecpg-sql-declare.html)（英文原文，待翻譯）


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.postgresql.tw/client-interfaces/ecpg/ecpg-sql-commands/ecpg-sql-declare.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
