bedorlan / priscilla Goto Github PK
View Code? Open in Web Editor NEWPL/SQL to Python transcompiler
License: MIT License
PL/SQL to Python transcompiler
License: MIT License
I'm getting errors migrating a simple cursor for loop.
The setup is python 3.6 on rhel 7.6 with a virtual environment (venv), so that I could load the modules.
The source is:
DECLARE
cursor c1 is
select name
from employees
order by name;
BEGIN
for r1 in c1 loop
dbms_output.put_line(r1.name);
end loop;
END;
/
The output is:
(priscilla) [:/opt/git/priscilla ]$ make migrate
python3 lib/S2S.py /opt/git/priscilla/input/ccr.pkg /opt/git/priscilla/output/ccr.py
Traceback (most recent call last):
File "lib/S2S.py", line 37, in
main(sys.argv)
File "lib/S2S.py", line 23, in main
node = tree.accept(visitor)
File "./built/PlSqlParser.py", line 7324, in accept
return visitor.visitSql_script(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 43, in visitSql_script
body = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 7541, in accept
return visitor.visitUnit_statement(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 52, in visitUnit_statement
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 32606, in accept
return visitor.visitAnonymous_block(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 59, in visitAnonymous_block
return self.visitBody(ctx)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 220, in visitBody
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34570, in accept
return visitor.visitSeq_of_statements(self)
File "./built/PlSqlParserVisitor.py", line 1394, in visitSeq_of_statements
return self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34757, in accept
return visitor.visitStatement(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 286, in visitStatement
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 35423, in accept
return visitor.visitLoop_statement(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 292, in visitLoop_statement
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 35534, in accept
return visitor.visitCursor_loop_param(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 310, in visitCursor_loop_param
target = ctx.index_name().getText().upper()
AttributeError: 'NoneType' object has no attribute 'getText'
make: *** [/opt/git/priscilla/output/ccr.py] Error 1
Any help appreciated thanks.
Hi
It seems to throw error for a pl/sql stored procedure that has INSERT SELECT statement.
Is this feature supported?
Thanks
python3.6 lib/S2S.py /opt/priscilla/input/wlk_rec_mi_hedgei_bak.pkg /opt/priscilla/output/wlk_rec_mi_hedgei_bak.py
Traceback (most recent call last):
File "lib/S2S.py", line 37, in
main(sys.argv)
File "lib/S2S.py", line 23, in main
node = tree.accept(visitor)
File "./built/PlSqlParser.py", line 7324, in accept
return visitor.visitSql_script(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 43, in visitSql_script
body = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 7541, in accept
return visitor.visitUnit_statement(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 52, in visitUnit_statement
ret = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 10058, in accept
return visitor.visitCreate_procedure_body(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 106, in visitCreate_procedure_body
return self.visitCreate_function_body(ctx)
File "/opt/priscilla/lib/ScriptVisitor.py", line 112, in visitCreate_function_body
ret = visitor.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 36221, in accept
return visitor.visitBody(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 220, in visitBody
ret = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34570, in accept
return visitor.visitSeq_of_statements(self)
File "./built/PlSqlParserVisitor.py", line 1394, in visitSeq_of_statements
return self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34757, in accept
return visitor.visitStatement(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 286, in visitStatement
ret = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 36524, in accept
return visitor.visitSql_statement(self)
File "./built/PlSqlParserVisitor.py", line 1529, in visitSql_statement
return self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 36757, in accept
return visitor.visitData_manipulation_language_statements(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 534, in visitData_manipulation_language_statements
return visitor.visitData_manipulation_language_statements(ctx)
File "/opt/priscilla/lib/SqlVisitor.py", line 16, in visitData_manipulation_language_statements
ret = self.visitSelect_statement(ctx)
File "/opt/priscilla/lib/SqlVisitor.py", line 41, in visitSelect_statement
param.start_index -= ctx.start.start
AttributeError: 'SQL' object has no attribute 'start_index'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.