Skip to content

Commit 9f30ac5

Browse files
committed
update 14
1 parent 3995a51 commit 9f30ac5

3 files changed

Lines changed: 9 additions & 2 deletions

File tree

CN/modules/ROOT/pages/master/4.1.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ IvorySQL安装方式包括以下5种:
1414
- <<源码安装>>
1515
- <<deb安装>>
1616

17-
本章将详细介绍每种方式的安装、运行及卸载过程。想要更快获得IvorySQL,请参阅xref:v4.5/3.1.adoc#快速开始[快速开始]。
17+
本章将详细介绍每种方式的安装、运行及卸载过程。想要更快获得IvorySQL,请参阅xref:master/3.1.adoc#快速开始[快速开始]。
1818

1919
同样,安装前请先创建一个用户,并赋予其root权限,安装、使用和卸载均以该用户执行。这里以ivorysql用户为例。
2020

CN/modules/ROOT/pages/master/6.3.2.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ IvorySQL提供了兼容Oracle的out参数功能,包括含有out参数的函数
3636
对PBE过程的修改包括:exec_parse_message函数中,根据应用接口传过来的参数类型oid,识别出实参的模式;在exec_bind_message函数中,对于匿名块DO+USING,识别出USING后面参数的模式,向执行器传递参数信息。
3737

3838
含OUT参数匿名块的执行
39+
3940
1. 在PortalStart函数中对匿名块语句,调用CreateTupleDescFromParams函数,增加参数构造描述信息。
4041

4142
2. PLiSQL_function成员fn_prokind增加新值PROKIND_ANONYMOUS_BLOCK用来表示匿名块。
@@ -61,18 +62,20 @@ ivorysql=# select * from get_parameter_description('insert into t values(:x, :y)
6162
对于匿名块语句,尚不支持。
6263
6364
2. PLiSQL端:主要是PL/iSQL块根据参数位置或参数名称调整参数内部标识。
65+
6466
执行函数需要从绑定句柄中获取参数的值与类型的信息;
6567
6668
对out参数的返回列名称做一个特殊处理。如果是out参数,那么其列名称为_column_xxx,其中xxx是out参数的位置,从而根据绑定位置与返回的位置从结果集中给out参数赋值;
6769
6870
在PLiSQL执行端,根据参数名字出现的位置,调整名字转换成内部标识的变量,如$number。在返回到客户端的时候,发送描述信息给libpq, 从而达到返回的列名是由参数名字构造,LIBPQ端根据列名来给out参数赋值。
6971
7072
3. libpq接口端:提供准备、绑定、执行函数,这些函数与OCI接口相应函数类似。
73+
7174
一般调用流程如下:
7275
使用IvyHandleAlloc分配语句句柄和错误句柄。
7376
调用IvyStmtPrepare准备语句。
7477
调用IvyBindByPos或IvyBindByName 绑定参数。
7578
调用IvyStmtExecute 执行,可重复执行。
7679
调用IvyFreeHandle 释放语句句柄和错误句柄。
7780
78-
另外还实现了Ivyconnectdb,Ivystatus,Ivyexec,IvyresultStatus,IvyCreatePreparedStatement,IvybindOutParameterByPos,IvyexecPreparedStatement,IvyexecPreparedStatement2,Ivynfields,Ivyntuples,Ivyclear等一系列接口函数。
81+
另外还实现了Ivyconnectdb,Ivystatus,Ivyexec,IvyresultStatus,IvyCreatePreparedStatement,IvybindOutParameterByPos,IvyexecPreparedStatement,IvyexecPreparedStatement2,Ivynfields,Ivyntuples,Ivyclear等一系列接口函数。

CN/modules/ROOT/pages/master/7.15.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ libpq接口端提供准备、绑定、执行函数,这些函数与OCI相应函
7070
== 测试用例
7171

7272
=== 含有out参数的函数
73+
7374
1. out参数和返回值数据类型没有关联
75+
7476
```
7577
ivorysql=# create or replace function test_return_out(id integer,price out integer,name out varchar) return varchar
7678
ivorysql-# as
@@ -84,6 +86,7 @@ CREATE FUNCTION
8486
```
8587

8688
2. IN OUT模式和OUT模式都不能有默认值
89+
8790
```
8891
ivorysql=# create or replace function test_return_inout(id integer,price in out integer default 100,name out varchar) return varchar
8992
ivorysql-# as
@@ -97,6 +100,7 @@ ERROR: IN OUT formal parameters may have no default expressions
97100
```
98101

99102
3. 如果有out参数,并且函数返回类型不是void,则函数体中必须有RETURN语句
103+
100104
```
101105
--if function's return type is non-void, the function body must has RETURN statement
102106
--if there is no RETURN statement, the function can be created, but when it is called,

0 commit comments

Comments
 (0)