-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathtestCreateProcedure.java
More file actions
65 lines (60 loc) · 3.49 KB
/
Copy pathtestCreateProcedure.java
File metadata and controls
65 lines (60 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package netezza;
import gudusoft.gsqlparser.EDataType;
import gudusoft.gsqlparser.EDbVendor;
import gudusoft.gsqlparser.ESqlStatementType;
import gudusoft.gsqlparser.TGSqlParser;
import gudusoft.gsqlparser.stmt.TCreateProcedureStmt;
import junit.framework.TestCase;
public class testCreateProcedure extends TestCase {
public void test1(){
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza);
sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_p() RETURNS INT4 LANGUAGE NZPLSQL AS\n" +
" BEGIN_PROC\n" +
" DECLARE\n" +
" words varchar;\n" +
" BEGIN\n" +
" words := 'This string is quoted';\n" +
" -- This comment is the match for below BEGIN_PROC\n" +
" insert into va values ('END_PROC');\n" +
" END;\n" +
" END_PROC;";
assertTrue(sqlparser.parse() == 0);
TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0);
assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("test_p"));
assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.int4_t);
assertTrue(createProcedureStmt.getBodyStatements().size() == 2);
assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt);
assertTrue(createProcedureStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert);
}
public void test2(){
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza);
sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE exec_nzplsql_block(text) RETURNS BOOLEAN\n" +
"LANGUAGE NZPLSQL AS\n" +
"BEGIN_PROC\n" +
" DECLARE lRet BOOLEAN;\n" +
" DECLARE sid INTEGER;\n" +
" DECLARE nm varchar;\n" +
" DECLARE cr varchar;\n" +
"BEGIN\n" +
" sid := current_sid;\n" +
" nm := 'any_block' || sid || '()';\n" +
" cr = 'CREATE OR REPLACE PROCEDURE ' || nm ||\n" +
" ' RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC '\n" +
" || \\$1 || ' END_PROC';\n" +
" EXECUTE IMMEDIATE cr;\n" +
" EXECUTE IMMEDIATE 'SELECT ' || nm;\n" +
" EXECUTE IMMEDIATE 'DROP PROCEDURE ' || nm;\n" +
" RETURN TRUE;\n" +
"END;\n" +
"END_PROC;";
assertTrue(sqlparser.parse() == 0);
TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0);
assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("exec_nzplsql_block"));
assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.bool_t);
//System.out.println(createProcedureStmt.getReturnDataType().getDataType());
assertTrue(createProcedureStmt.getBodyStatements().size() == 7);
assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt);
assertTrue(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt);
//System.out.println(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype);
}
}