Repository: tobymao/sqlglot

Issue:
Unable to parse the oracle query when ":OBJECT" bind is present
Hello,

Parser is throwing an error when there is ":OBJECT" bind is present in the oracle query.

**Code for your reference -**

```
import sqlglot.expressions as exp

query ="""
SELECT A.COL1, B.COL2 FROM SCHEMA1.TABLE1 A, SCHEMA2.TABLE2 B WHERE A.COL1 = :OBJECT AND B.COL2 = :SOMEVARIABLE 
"""

expressions = sqlglot.parse_one(query, read='oracle')
x = list(expressions.find_all(exp.Table))

for i in x:
  listTables = str(i).split(' ')[0]
  print(listTables)
```


Above code works fine if Bind name is different that OBJECT. If ':OBJECT' is present in the query, then it fails.

Request you to add support for ':OBJECT' for query parsing.
Unable to parse the oracle query when "#" is present in the column names
Hello,

Parser is throwing an error when there is "#" character is present in the column name.

**Code for your reference -**

```
import sqlglot.expressions as exp

query ="""
SELECT A.COL#, B.COL2 FROM SCHEMA1.TABLE1 A
"""

expressions = sqlglot.parse_one(query, read='oracle')
x = list(expressions.find_all(exp.Table))

for i in x:
  listTables = str(i).split(' ')[0]
  print(listTables)
```


Above code fails as it cannot process '#' and throws the error.
Request you to add support for '#' for query parsing.

Discussion:

Patch:
diff --git a/sqlglot/parser.py b/sqlglot/parser.py
index c1d86954..14c5e964 100644
--- a/sqlglot/parser.py
+++ b/sqlglot/parser.py
@@ -578,7 +578,7 @@ class Parser(metaclass=_Parser):
         TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder),
         TokenType.PARAMETER: lambda self: self._parse_parameter(),
         TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text)
-        if self._match_set((TokenType.NUMBER, TokenType.VAR))
+        if self._match(TokenType.NUMBER) or self._match_set(self.ID_VAR_TOKENS)
         else None,
     }
 


Test patch:
diff --git a/tests/dialects/test_oracle.py b/tests/dialects/test_oracle.py
index 694cd68b..fb8f8fbb 100644
--- a/tests/dialects/test_oracle.py
+++ b/tests/dialects/test_oracle.py
@@ -6,6 +6,7 @@ class TestOracle(Validator):
     dialect = "oracle"
 
     def test_oracle(self):
+        self.validate_identity("SELECT :OBJECT")
         self.validate_identity("SELECT * FROM t FOR UPDATE")
         self.validate_identity("SELECT * FROM t FOR UPDATE WAIT 5")
         self.validate_identity("SELECT * FROM t FOR UPDATE NOWAIT")