返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

gbase_stmt_bind_param
 摘要:



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 55 -
将应用程序数据缓冲与预处理SQL 语句中的参数标记符关联起来。
 语法:
gs_bool gbase_stmt_bind_param(GBASE_STMT * stmt, GBASE_BIND *
bnd);
 参数:
 返回值:
如果绑定成功,返回0。如果出现错误,返回非0 值。
 错误
CR_INVALID_BUFFER_USE
指明“bind”
(绑定)是否将提供程序块中
的长数据,以及缓冲类型是否为非字符串
或二进制类型。
CR_UNSUPPORTED_PARAM_TYPE 不支持该转换。或许buffer_type 值是







非法的,或不是所支持的类型之一。
CR_OUT_OF_MEMORY


内存溢出。
CR_UNKNOWN_ERROR


出现未知错误。

以下示例显示了添加到 SPL 例程 items_pct 中的 TRACE 语句。SET DEBUG FILE TO 语
句将跟踪输出定向至路径名所指定的文件。TRACE ON 语句开始跟踪过程中的语句和变
量。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 343 -

CREATE PROCEDURE items_pct(mac CHAR(3))
DEFINE tp MONEY;
DEFINE mc_tot MONEY;
DEFINE pct DECIMAL;
SET DEBUG FILE TO 'pathname';

TRACE 'begin trace';
TRACE ON;
LET tp = (SELECT SUM(total_price) FROM items);
LET mc_tot = (SELECT SUM(total_price) FROM items
WHERE manu_code = mac);
LET pct = mc_tot / tp;
IF pct > .10 THEN
RAISE EXCEPTION -745;
END IF
TRACE OFF;
END PROCEDURE;

CREATE TRIGGER items_ins
INSERT ON items
REFERENCING NEW AS post_ins
FOR EACH ROW(EXECUTE PROCEDURE items_pct (post_ins.manu_code));

在本例中,两个IF语句似乎是等价的。但是,如果x或y有一个是NULL,那么第一个IF
语句将y的值赋值给high,而第二个if语句将x的值赋值为high。
DECLARE
x INTEGER := 2;
Y INTEGER := 5;
high INTEGER;
BEGIN
IF (x > y) -- If x or y is NULL, then (x > y) is NULL
THEN high := x; -- run if (x > y) is TRUE
ELSE high := y; -- run if (x > y) is FALSE or NULL
END IF;
IF NOT (x > y) -- If x or y is NULL, then NOT (x > y) is NULL
THEN high := y; -- run if NOT (x > y) is TRUE
ELSE high := x; -- run if NOT (x > y) is FALSE or NULL
END IF;
END;