PostgreSQL 8.1 中文文档(PostgreSQL 中国 制作) | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 30. ecpg - 在 C 里嵌入 SQL | Fast Forward | Next |
在嵌入的 SQL 应用中可以运行任何 SQL 命令。下面是一些如何使用它们的例子。
创建一个表:
EXEC SQL CREATE TABLE foo (number integer, ascii char(16)); EXEC SQL CREATE UNIQUE INDEX num1 ON foo(number); EXEC SQL COMMIT;
插入一些行:
EXEC SQL INSERT INTO foo (number, ascii) VALUES (9999, 'doodad'); EXEC SQL COMMIT;
删除一些行:
EXEC SQL DELETE FROM foo WHERE number = 9999; EXEC SQL COMMIT;
单行 select:
EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = 'doodad';
使用游标的 select:
EXEC SQL DECLARE foo_bar CURSOR FOR SELECT number, ascii FROM foo ORDER BY ascii; EXEC SQL FETCH foo_bar INTO :FooBar, DooDad; ... EXEC SQL CLOSE foo_bar; EXEC SQL COMMIT;
更新:
EXEC SQL UPDATE foo SET ascii = 'foobar' WHERE number = 9999; EXEC SQL COMMIT;
形如 :something 这样的记号是宿主变量,也就是说, 它们指向 C 程序里的变量。我们在下一节里解释这些话题。
在缺省模式下,语句只有在发出了 EXEC SQL COMMIT 的时候才提交。嵌入的 SQL 接口也支持事务的自动提交(类似 libpq 的行为), 方法是通过给 ecpg (见下文) 增加命令行选项 -t,或者是通过 EXEC SQL SET AUTOCOMMIT TO ON 语句。 在自动提交模式里,每条命令都是自动提交的,除非它们包围在一个明确的事务块里。 这个模式可以用 EXEC SQL SET AUTOCOMMIT TO OFF 明确地关闭。