this is an oracle sql parser. ref: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf
statement | sub statement | yacc | ast |
---|---|---|---|
Alter table | Add column | ✔️ | ✔️ |
Alter table | Modify column | ✔️ | ✔️ |
Alter table | Drop column | ✔️ | ✔️ |
Alter table | Rename column | ✔️ | ✔️ |
Alter table | Add constraint | ✔️ | ✔️ |
Alter table | Modify constraint | ✔️ | ✔️ |
Alter table | Rename constraint | ✔️ | ✔️ |
Alter table | Drop constraint | ✔️ | ✔️ |
Create table | Relational table | ✔️ | ✔️ |
Create index | Relational table | ✔️ | |
Drop table | - | ✔️ | ✔️ |
Drop index | - | ✔️ | ✔️ |
package main
import (
"fmt"
"github.com/sjjian/oracle-sql-parser"
"github.com/sjjian/oracle-sql-parser/ast"
)
func main() {
stmts, err := parser.Parser("alter table db1.t1 add (id number, name varchar2(255))")
if err != nil {
fmt.Println(err)
return
}
stmt := stmts[0]
switch s := stmt.(type) {
case *ast.AlterTableStmt:
fmt.Println(s.TableName.Table.Value) // t1
}
}