diff --git a/PL_SQL (Oracle).tmLanguage b/PL_SQL (Oracle).tmLanguage
index e236b5c..23419c1 100644
--- a/PL_SQL (Oracle).tmLanguage
+++ b/PL_SQL (Oracle).tmLanguage
@@ -7,6 +7,11 @@
sql
ddl
dml
+ pks
+ pkb
+ fnc
+ prc
+ pck
foldingStartMarker
(?i)^\s*(begin|if|loop)\b
@@ -181,7 +186,7 @@
match
- (?i)\b(with|select|from|where|order\s+by|group\s+by|asc|desc|update|set|insert|into|values|delete|from|distinct|union|having|limit|table|between|of|all|any|exists|rownum|cursor)\b
+ (?i)\b(with|select|from|join|where|order\s+by|group\s+by|asc|desc|update|set|insert|into|values|delete|from|distinct|union|having|limit|table|between|of|all|any|exists|rownum|cursor|returning|merge|using|on|matched)\b
name
keyword.other.sql.oracle
diff --git a/RunSQL.sql b/RunSQL.sql
index cad1e81..e1e32c3 100644
--- a/RunSQL.sql
+++ b/RunSQL.sql
@@ -5,8 +5,12 @@ SET FEEDBACK OFF
@&1
SELECT 'Filename: &1' FROM DUAL;
SELECT '(' || TYPE || ' ' || NAME || '/0:' || POSITION || ')' || ' ' || LINE || ':' || POSITION || ' ' || TEXT as ERRORS
- FROM USER_ERRORS
+ FROM ALL_ERRORS
WHERE line <> 0
- AND TYPE || ' ' || NAME in (&2)
+ AND (
+ TYPE || ' ' || OWNER || '.' || NAME in (&2)
+ OR
+ (OWNER = USER AND TYPE || ' ' || NAME in (&2))
+ )
ORDER BY NAME, TYPE, SEQUENCE;
exit
diff --git a/oracle_exec.py b/oracle_exec.py
index 4728b80..52a91fc 100644
--- a/oracle_exec.py
+++ b/oracle_exec.py
@@ -16,12 +16,15 @@ def run(self, dsn="", **kwargs):
# Find entities declaration in source
self.entities = oracle_lib.find_entities(self.window.active_view())
# Create a string for the in of sql command
- sqlfilter = '"' + ",".join("'%s'" % entity for entity in self.entities.keys()) + '"'
+ if len(self.entities) == 0:
+ sqlfilter = "\"''\""
+ else:
+ sqlfilter = '"' + ",".join("'%s'" % entity for entity in self.entities.keys()) + '"'
- cmd = ["sqlplus.exe", "-s", dsn, "@", os.path.join(sublime.packages_path(), 'OracleSQL', 'RunSQL.sql'),
- self.window.active_view().file_name(), sqlfilter]
+ (directory, filename) = os.path.split(self.window.active_view().file_name())
+ cmd = ["sqlplus.exe", "-s", dsn, "@", os.path.join(sublime.packages_path(), 'OracleSQL', 'RunSQL.sql'), '"'+filename+'"', sqlfilter]
- super(OracleExecCommand, self).run(cmd, "^Filename: (.+)$", "^\\(.+?/([0-9]+):([0-9]+)\\) [0-9]+:[0-9]+ (.+)$", **kwargs)
+ super(OracleExecCommand, self).run(cmd, "^Filename: (.+)$", "^\\(.+?/([0-9]+):([0-9]+)\\) [0-9]+:[0-9]+ (.+)$", working_dir=directory, **kwargs)
def append_data(self, proc, data):
# Update the line number of output_view with the correct line number of source view
diff --git a/oracle_lib.py b/oracle_lib.py
index df5854a..21a3104 100644
--- a/oracle_lib.py
+++ b/oracle_lib.py
@@ -6,7 +6,7 @@ def find_entities(view):
Return all 'create or replace' type and name in the script.
"""
results = []
- positions = view.find_all(r'(?im)create\s+(?:or\s+replace\s+)?(?:force\s+)?(package(?:\s+body)?|procedure|function|trigger|view|type)\s+(\w+\.)?(\w+)', 0, "$1 $3", results)
+ positions = view.find_all(r'(?im)create\s+(?:or\s+replace\s+)?(?:force\s+)?(package(?:\s+body)?|procedure|function|trigger|view|type)\s+(\w+\.)?(\w+)', 0, "$1 $2$3", results)
return dict((val.upper(), view.rowcol(pos.begin())[0]) for (pos, val) in zip(positions, results))
diff --git a/readme.rst b/readme.rst
index 24eb1c7..97f4e48 100644
--- a/readme.rst
+++ b/readme.rst
@@ -1,5 +1,5 @@
=========================================================
-Sublime Text 2 plackage for editing Oracle SQL and PL/SQL
+Sublime Text 2 package for editing Oracle SQL and PL/SQL
=========================================================
Language definition and execution utilities for Oracle PL/SQL files.