Skip to content

Commit 5c3757a

Browse files
committed
Fix some wording
1 parent fb131f0 commit 5c3757a

4 files changed

Lines changed: 83 additions & 84 deletions

File tree

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
== 目的
99

10-
PostgreSQL支持函数(FUNCTION)和存储过程(PROCEDURE),但是在语法上和Oracle有差异,为了让Oracle的PLSQL语句可以执行在IvorySQL上执行,也就是“语法兼容”,IvorySQL采取这样的解决方案:如果Oracle的子句在IvorySQL中存在相同功能的子句,则直接映射为对应的IvorySQL子句,否则只实现其语法,不实现其功能。
10+
PostgreSQL支持函数(FUNCTION)和存储过程(PROCEDURE),但是在语法上和Oracle有差异,为了让Oracle的PLSQL语句可以在IvorySQL上执行,也就是“语法兼容”,IvorySQL采取这样的解决方案:如果Oracle的子句在IvorySQL中存在相同功能的子句,则直接映射为对应的IvorySQL子句,否则只实现其语法,不实现其功能。
1111

1212
== 实现说明
1313

@@ -17,7 +17,7 @@ PL/iSQL是IvorySQL中的过程语言名称,专门用来兼容Oracle的PLSQL语
1717

1818
Oracle的sqlplus工具使用斜线(/)来结束函数和存储过程,IvorySQL的客户端工具psql需要兼容同样的语法,也就是说我们常规的遇到分号发送语句给服务端的机制,当遇到Oracle风格的函数和存储过程命令时失效,改为使用斜线(/)发送命令。
1919

20-
为此在PsqlScanStateData结构体中增加如下字段
20+
为此在 PsqlScanStateData 结构体中增加如下字段
2121
```
2222
bool cancel_semicolon_terminator; /* not send command when semicolon found */
2323

@@ -45,7 +45,7 @@ Oracle的sqlplus工具使用斜线(/)来结束函数和存储过程,IvorySQL
4545

4646
```
4747

48-
同时修改ora_psqlscan.l,添加和修改相应的词法规则, 以下是代码片段示例:
48+
同时修改 ora_psqlscan.l,添加和修改相应的词法规则, 以下是代码片段示例:
4949
```
5050
{
5151
if (is_oracle_slash(cur_state, cur_state->scanline))
@@ -146,12 +146,12 @@ SQL端要能够识别函数和存储过程的创建语法,这是通过修改or
146146
| internal_yylex
147147
|====
148148

149-
ora_base_yylex函数中在创建函数、过程、匿名块时会预读部分token,使用上述结构缓存到堆栈中,是为了构造一个Oracle PL/SQL语法的SCONST发送给PL/iSQL端去处理。具体请参考源代码。
149+
ora_base_yylex函数中在创建函数、过程、匿名块时会预读部分token,使用上述结构缓存到堆栈中,是为了构造一个符合Oracle PL/SQL语法的SCONST发送给PL/iSQL端去处理。具体请参考源代码。
150150

151151

152152
=== PL/iSQL端
153153

154-
该部分主要修改了pl_gram.y文件,以实现兼容PLSQL的函数和存储过程语法,在不影响PG原生的PL/pgSQL的前提下去兼容Oracle PL/SQL语法形式,如下是DECLARE部分兼容的代码示例,更多请参考IvorySQL源代码。
154+
该部分主要修改了pl_gram.y文件,以兼容PLSQL的函数和存储过程语法,在不影响PG原生的PL/pgSQL的前提下去兼容Oracle PL/SQL语法形式,如下是DECLARE部分兼容的代码示例,更多请参考IvorySQL源代码。
155155

156156
```
157157
/*

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

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,29 @@
77

88
== 目的
99

10-
PostgreSQL支持函数(FUNCTION)和存储过程(PROCEDURE),但是在语法上和Oracle有差异,为了让Oracle的PLSQL语句可以执行在IvorySQL上执行,也就是“语法兼容”,IvorySQL采取这样的解决方案:如果Oracle的子句在IvorySQL中存在相同功能的子句,则直接映射为对应的IvorySQL子句,否则只实现其语法,不实现其功能。
10+
PostgreSQL支持函数(FUNCTION)和存储过程(PROCEDURE),但是在语法上和Oracle有差异,为了让Oracle的PLSQL语句可以在IvorySQL上执行,也就是“语法兼容”,IvorySQL采取这样的解决方案:如果Oracle的子句在IvorySQL中存在相同功能的子句,则直接映射为对应的IvorySQL子句,否则只实现其语法,不实现其功能。
1111

1212
== 兼容支持
1313

1414
具体的Oracle兼容支持包括以下几个方面:
1515

16-
=== 1.CREATE FUNCTION语法支持EDITIONABLE/NONEDITIONABLE
16+
=== CREATE FUNCTION 语法支持 EDITIONABLE/NONEDITIONABLE
1717

1818
```
19-
CREATE or replace FUNCTION ora_func RETURN integer AS
20-
BEGIN
19+
CREATE or replace EDITIONABLE FUNCTION ora_func RETURN integer AS
20+
BEGIN
2121
RETURN 1;
2222
END;
2323
/
24-
CREATE FUNCTION
2524

26-
select ora_func() from dual;
27-
ora_func
28-
----------
29-
1
30-
(1 row)
25+
CREATE or replace NONEDITIONABLE FUNCTION ora_func RETURN integer IS
26+
BEGIN
27+
RETURN 1;
28+
END;
29+
/
3130
```
3231

33-
=== 2.CREATE FUNCTION语法支持RETURN, IS关键字,无需指定语言
32+
=== CREATE FUNCTION 语法支持 RETURN/IS 关键字,无需指定语言
3433

3534
```
3635
CREATE or replace EDITIONABLE FUNCTION ora_func RETURN integer IS
@@ -40,7 +39,7 @@ END;
4039
/
4140
```
4241

43-
=== 3.CREATE FUNCTION语法函数没有参数,函数名后面不带()
42+
=== CREATE FUNCTION 语法函数没有参数,函数名后面不带()
4443

4544
```
4645
CREATE or replace FUNCTION ora_func RETURN integer
@@ -52,14 +51,14 @@ END;
5251
/
5352
```
5453

55-
=== 4.CREATE FUNCTION参数个数增加,最大值可在configure时指定
54+
=== CREATE FUNCTION 参数个数增加,最大值可在configure时指定
5655

5756
```
5857
configure --help
5958
--with-max-funarg=MAXFUNARG
6059
```
6160

62-
=== 5.CREATE FUNCTION语法中END; 在psql中以/结束
61+
=== CREATE FUNCTION 语法中 END; 在psql中以/结束
6362

6463
```
6564
CREATE or replace EDITIONABLE FUNCTION ora_func RETURN integer IS
@@ -69,7 +68,7 @@ END;
6968
/
7069
```
7170

72-
=== 6.CREATE FUNCTION语法变量声明前面没有DECLARE关键字
71+
=== CREATE FUNCTION 语法变量声明前面没有 DECLARE 关键字
7372

7473
```
7574
CREATE OR REPLACE
@@ -95,7 +94,7 @@ select ora_func(5,9)from dual;
9594
(1 row)
9695
```
9796
98-
=== 7.CREATE FUNCTION语法支持OUT 参数NOCOPY功能
97+
=== CREATE FUNCTION 语法支持 OUT 参数 NOCOPY 功能
9998
10099
```
101100
CREATE OR REPLACE FUNCTION test_nocopy(a IN int, b OUT NOCOPY int, c IN OUT NOCOPY int)
@@ -109,7 +108,7 @@ END;
109108
/
110109
```
111110
112-
=== 8.CREATE FUNCTION语法支持sharing_clause子句
111+
=== CREATE FUNCTION 语法支持 sharing 子句
113112
114113
```
115114
CREATE or replace FUNCTION ora_func RETURN integer
@@ -129,7 +128,7 @@ END;
129128
/
130129
```
131130
132-
=== 9.CREATE FUNCTION语法支持invoker_rights_clause,默认权限改成DR(DEFINER)
131+
=== CREATE FUNCTION 语法支持 invoker_rights (AUTHID) 子句,默认权限改成 DR(DEFINER)
133132
134133
```
135134
CREATE or replace FUNCTION ora_func RETURN integer
@@ -139,6 +138,7 @@ BEGIN
139138
RETURN 1;
140139
END;
141140
/
141+
142142
CREATE or replace FUNCTION ora_func RETURN integer
143143
SHARING = NONE AUTHID DEFINER
144144
IS
@@ -148,7 +148,7 @@ END;
148148
/
149149
```
150150
151-
=== 10.CREATE FUNCTION语法支持ACCESSIBLE BY
151+
=== CREATE FUNCTION 语法支持 ACCESSIBLE BY
152152
153153
```
154154
CREATE or replace FUNCTION ora_func RETURN integer
@@ -191,7 +191,7 @@ END;
191191
/
192192
```
193193
194-
=== 11.CREATE FUNCTION语法支持DEFAULT COLLATION
194+
=== CREATE FUNCTION 语法支持 DEFAULT COLLATION
195195
196196
```
197197
CREATE or replace FUNCTION ora_func RETURN integer
@@ -205,7 +205,7 @@ END;
205205
/
206206
```
207207
208-
=== 12.CREATE FUNCTION语法支持deterministic_clause,功能与IvorySQL的IMMUTABLE相同
208+
=== CREATE FUNCTION 语法支持 deterministic 子句,功能与 IvorySQL 的 IMMUTABLE 相同
209209
210210
```
211211
CREATE or replace FUNCTION ora_func RETURN integer
@@ -220,7 +220,7 @@ END;
220220
/
221221
```
222222
223-
=== 13.CREATE FUNCTION语法支持parallel_enable_clause,功能与IvorySQL的PARALLEL SAFE相同
223+
=== CREATE FUNCTION 语法支持 parallel_enable 子句,功能与 IvorySQL 的 PARALLEL SAFE 相同
224224
225225
```
226226
CREATE or replace FUNCTION ora_func RETURN integer
@@ -236,7 +236,7 @@ END;
236236
/
237237
```
238238
239-
=== 14.CREATE FUNCTION语法支持result_cache_clause子句
239+
=== CREATE FUNCTION 语法支持 result_cache 子句
240240
241241
```
242242
CREATE or replace FUNCTION ora_func RETURN integer
@@ -277,7 +277,7 @@ END;
277277
/
278278
```
279279
280-
=== 15.CREATE FUNCTION语法支持aggregate_clause子句
280+
=== CREATE FUNCTION 语法支持 aggregate 子句
281281
282282
```
283283
CREATE or replace FUNCTION ora_func RETURN integer
@@ -308,7 +308,7 @@ END;
308308
/
309309
```
310310
311-
=== 16.CREATE FUNCTION语法支持pipelined_clause子句
311+
=== CREATE FUNCTION 语法支持 pipelined 子句
312312
313313
```
314314
CREATE or replace FUNCTION ora_func RETURN integer
@@ -327,7 +327,7 @@ END;
327327
/
328328
```
329329
330-
=== 17.CREATE FUNCTION语法支持sql_macro_clause子句
330+
=== CREATE FUNCTION 语法支持 sql_macro 子句
331331
332332
```
333333
CREATE or replace FUNCTION ora_func RETURN integer
@@ -347,7 +347,7 @@ END;
347347
/
348348
```
349349
350-
=== 18.ALTER FUNCTION语法兼容
350+
=== ALTER FUNCTION 语法兼容
351351
352352
```
353353
alter function public.test_func noneditionable;
@@ -357,7 +357,7 @@ alter function test_func compile debug sd = mv;
357357
alter function test_func compile debug reuse settings;
358358
```
359359
360-
=== 19.CREATE PROCEDURE语法支持EDITIONABLE/NONEDITIONABLE
360+
=== CREATE PROCEDURE 语法支持 EDITIONABLE / NONEDITIONABLE
361361
362362
```
363363
CREATE OR REPLACE EDITIONABLE PROCEDURE ora_procedure
@@ -377,7 +377,7 @@ end;
377377
/
378378
```
379379
380-
=== 20.CREATE PROCEDURE语法函数没有参数,函数名后面不带()
380+
=== CREATE PROCEDURE 语法函数没有参数,函数名后面不带()
381381
382382
```
383383
CREATE OR REPLACE EDITIONABLE PROCEDURE ora_procedure
@@ -389,10 +389,10 @@ end;
389389
/
390390
```
391391
392-
=== 21.CREATE PROCEDURE语法中END; 在psql中以/结束
392+
=== CREATE PROCEDURE 语法中 END; 在psql中以 / 结束
393393
394394
```
395-
CREATE OR REPLACE EDITIONABLE PROCEDURE ora_procedure
395+
CREATE OR REPLACE PROCEDURE ora_procedure
396396
IS
397397
p integer := 20;
398398
begin
@@ -401,7 +401,7 @@ end;
401401
/
402402
```
403403
404-
=== 22.CREATE PROCEDURE语法支持sharing_clause子句
404+
=== CREATE PROCEDURE 语法支持 sharing 子句
405405
406406
```
407407
CREATE OR REPLACE PROCEDURE ora_procedure
@@ -422,7 +422,7 @@ end;
422422
/
423423
```
424424
425-
=== 23.CREATE PROCEDURE语法支持DEFAULT COLLATION子句
425+
=== CREATE PROCEDURE 语法支持 DEFAULT COLLATION 子句
426426
427427
```
428428
CREATE OR REPLACE PROCEDURE ora_procedure
@@ -436,7 +436,7 @@ end;
436436
/
437437
```
438438
439-
=== 24.CREATE PROCEDURE语法支持invoker_rights_clause子句
439+
=== CREATE PROCEDURE 语法支持 invoker_rights (AUTHID) 子句
440440
441441
```
442442
CREATE OR REPLACE PROCEDURE ora_procedure
@@ -461,7 +461,7 @@ end;
461461
/
462462
```
463463
464-
=== 25.CREATE PROCEDURE语法支持ACCESSIBLE BY子句
464+
=== CREATE PROCEDURE 语法支持 ACCESSIBLE BY 子句
465465
466466
```
467467
CREATE OR REPLACE PROCEDURE ora_procedure
@@ -521,7 +521,7 @@ end;
521521
/
522522
```
523523
524-
=== 26.ALTER PROCEDURE语法兼容
524+
=== ALTER PROCEDURE 语法兼容
525525
526526
```
527527
alter procedure test_proc editionable;
@@ -532,7 +532,7 @@ alter procedure test_proc compile debug sd = mv;
532532
alter procedure test_proc compile debug reuse settings;
533533
```
534534
535-
=== 27.存储过程和函数没有参数,SELECT调用支持不带()
535+
=== 存储过程和函数没有参数,SELECT调用支持不带 ()
536536
537537
```
538538
create or replace function f_noparentheses
@@ -552,12 +552,12 @@ end;
552552
CALL protest();
553553
```
554554
555-
=== 28.函数和存储过程相关的视图
555+
=== 函数和存储过程相关的视图
556556
557557
```
558558
相关视图位于文件 contrib/ivorysql_ora/src/sysview/sysview--1.0.sql 中,包括DBA_PROCEDURES,ALL_PROCEDURES,USER_PROCEDURES,DBA_SOURCE,ALL_SOURCE,USER_SOURCE,DBA_ARGUMENTS,ALL_ARGUMENTS,USER_ARGUMENTS等。
559559
```
560560
561-
=== 29.支持--和/**/两种注释方法
561+
=== 支持--和/**/两种注释方法
562562
563-
=== 30.pg_dump备份SQL脚本文件的备份格式时,在函数的定义最后增加一个斜线 /
563+
=== pg_dump备份SQL脚本文件的备份格式时,在函数的定义最后增加一个斜线 /

EN/modules/ROOT/pages/master/6.3.6.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ PL/iSQL is the name of the procedural language in IvorySQL, specifically designe
1515

1616
=== Client tool psql
1717

18-
Oracle's sqlplus tool uses a slash (/) to terminate functions and stored procedures. IvorySQL's client tool, psql, needs to be compatible with this same syntax. This means that the conventional mechanism—where statements are sent to the server upon encountering a semicolon—becomes ineffective when dealing with Oracle-style function and stored procedure commands; instead, a slash (/) is used to send the commands.
18+
Oracle's sqlplus tool uses a slash (/) to terminate functions and stored procedures. IvorySQL's client tool, psql, needs to be compatible with the same syntax. This means that the conventional mechanism—where statements are sent to the server upon encountering a semicolon—becomes ineffective when dealing with Oracle-style function and stored procedure commands; instead, a slash (/) is used to send the commands.
1919

2020
To this end the following fields are added to the PsqlScanStateData structure:
2121
```

0 commit comments

Comments
 (0)