返回首页

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

更新日期:2024年09月11日

参数说明:指定包含CA 信息的文件的名称,其相对路径是相对于数据目录的。
该参数属于POSTMASTER 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:字符串,其中空字符串表示没有CA 文件被加载,不进行客户端证书验证。
默认值:cacert.pem

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1163

PL/pgSQL 是一种可载入的过程语言。
用PL/pgSQL 创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复
杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。
SQL 被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL 语
句必须由数据库服务器单独执行。
这意味着客户端应用必须发送每一个查询到数据库服务器、
等待它被处理、
接收并处理
结果、做一些计算,然后发送更多查询给服务器。
如果客户端和数据库服务器不在同一台机
器上,则会引起进程间通信并且将带来网络负担。
通过PL/pgSQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有
了一种过程语言的能力并且使SQL 更易用,同时能节省客户端/服务器通信开销。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
621

客户端和服务器之间的额外往返通信被消除。

客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。

多轮的查询解析可以被避免。
PL/pgSQL 可以使用SQL 中所有的数据类型、操作符和函数。一些常见函数,例如
gs_extend_library。
应用PL/pgSQL 创建函数的语法为CREATE FUNCTION。
PL/pgSQL 是一种可载入的过
程语言。其应用方法与18 存储过程相似,只是存储过程无返回值,函数有返回值。
16 存储过程

执行存储过程
使用游标的callproc 方法可以调用GBase 数据库的存储过程。
存储过程返
回的结果集通过4.2.2 小节中描述的方法获取。
如果存储过程包含输出参数,
则可以通过游标的save_param_val 方法获取
输出参数值。
1) 下面的样例代码使用callproc 方法调用存储过程,并获取存储过程结果
集。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:



GBase Python 接口开发手册
南大通用数据技术股份有限公司

- 13 -
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC2")
cur.execute("CREATE PROCEDURE TESTCALLPROC2() \
BEGIN \
select 3; \
select 4; \
END")
res = cur.callproc("TESTCALLPROC2")
for r in res:
print r.fetchall()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC2")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()
2) 下面的样例代码使用callproc 方法调用存储过程,
并通过save_param_val
方法获取存储过程返回值。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC1")
cur.execute("CREATE PROCEDURE TESTCALLPROC1(\
IN pFac1 INT, IN pFac2 INT, OUT pProd INT) \
BEGIN \
SET pProd := pFac1 * pFac2; \
select 1; \

GBase Python 接口开发手册


- 14 -

南大通用数据技术股份有限公司
select 2; \
END")
res = cur.callproc("TESTCALLPROC1", (3,4,0))
for r in res:
print r.fetchall()
print cur.save_param_val()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC2")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()