mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-09 14:31:35 +08:00
🐛 fix(sql-editor): 修复存储过程定义执行截断
This commit is contained in:
@@ -66,6 +66,27 @@ func TestSplitSQLStatements_DollarQuoting(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitSQLStatements_PostgresCreateFunctionDollarQuoting(t *testing.T) {
|
||||
input := `CREATE OR REPLACE FUNCTION refresh_stats() RETURNS void AS $$
|
||||
BEGIN
|
||||
PERFORM refresh_now();
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
SELECT 2;`
|
||||
got := splitSQLStatements(input)
|
||||
want := []string{
|
||||
`CREATE OR REPLACE FUNCTION refresh_stats() RETURNS void AS $$
|
||||
BEGIN
|
||||
PERFORM refresh_now();
|
||||
END;
|
||||
$$ LANGUAGE plpgsql`,
|
||||
"SELECT 2",
|
||||
}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("splitSQLStatements(%q) = %#v, want %#v", input, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitSQLStatements_FullWidthSemicolon(t *testing.T) {
|
||||
input := "SELECT 1;SELECT 2"
|
||||
got := splitSQLStatements(input)
|
||||
@@ -155,6 +176,41 @@ END;`,
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitSQLStatements_OracleCreateProcedureBlock(t *testing.T) {
|
||||
input := `CREATE OR REPLACE PROCEDURE proc_tally2accept(
|
||||
p_tallyacceptno IN t_tally_accept_h.acceptno%TYPE,
|
||||
out_acceptno OUT t_accept_h.acceptno%TYPE
|
||||
) IS
|
||||
v_busno t_tally_accept_h.busno%TYPE;
|
||||
v_count PLS_INTEGER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM t_tally_accept_h WHERE acceptno = p_tallyacceptno;
|
||||
IF v_count > 0 THEN
|
||||
out_acceptno := p_tallyacceptno;
|
||||
END IF;
|
||||
END;
|
||||
SELECT 1 FROM dual;`
|
||||
got := splitSQLStatements(input)
|
||||
want := []string{
|
||||
`CREATE OR REPLACE PROCEDURE proc_tally2accept(
|
||||
p_tallyacceptno IN t_tally_accept_h.acceptno%TYPE,
|
||||
out_acceptno OUT t_accept_h.acceptno%TYPE
|
||||
) IS
|
||||
v_busno t_tally_accept_h.busno%TYPE;
|
||||
v_count PLS_INTEGER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM t_tally_accept_h WHERE acceptno = p_tallyacceptno;
|
||||
IF v_count > 0 THEN
|
||||
out_acceptno := p_tallyacceptno;
|
||||
END IF;
|
||||
END;`,
|
||||
"SELECT 1 FROM dual",
|
||||
}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("splitSQLStatements(%q) = %#v, want %#v", input, got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitSQLStatements_TransactionBeginStillSplits(t *testing.T) {
|
||||
input := "BEGIN; UPDATE accounts SET balance = balance - 1 WHERE id = 1; COMMIT;"
|
||||
got := splitSQLStatements(input)
|
||||
|
||||
Reference in New Issue
Block a user