代码拉取完成,页面将自动刷新
// Copyright 2019, 2020 The Godror Authors
//
//
// SPDX-License-Identifier: UPL-1.0 OR Apache-2.0
package godror_test
import (
"context"
"testing"
godror "github.com/godror/godror"
errors "golang.org/x/xerrors"
)
func TestQRCN(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
conn, err := godror.DriverConn(ctx, testDb)
if err != nil {
t.Fatal(err)
}
testDb.Exec("DROP TABLE test_subscr")
if _, err = testDb.Exec("CREATE TABLE test_subscr (i NUMBER)"); err != nil {
t.Fatal(err)
}
defer testDb.Exec("DROP TABLE test_subscr")
var events []godror.Event
cb := func(e godror.Event) {
t.Log(e)
events = append(events, e)
}
s, err := conn.NewSubscription("subscr", cb)
if err != nil {
var ec interface{ Code() int }
if errors.As(err, &ec) {
switch ec.Code() {
case 29970, 65131:
t.Skip(err.Error())
case 1031, 29972:
t.Log("See \"https://docs.oracle.com/database/121/ADFNS/adfns_cqn.htm#ADFNS553\"")
var User string
_ = testDb.QueryRow("SELECT USER FROM DUAL").Scan(&User)
//t.Log("GRANT EXECUTE ON DBMS_CQ_NOTIFICATION TO "+User)
t.Log("GRANT CHANGE NOTIFICATION TO " + User + ";")
t.Skip(err.Error())
}
}
t.Fatalf("%+v", err)
}
defer s.Close()
if err = s.Register("SELECT COUNT(0) FROM test_subscr"); err != nil {
t.Fatalf("%+v", err)
}
qry := "SELECT regid, table_name FROM USER_CHANGE_NOTIFICATION_REGS"
rows, err := testDb.Query(qry)
if err != nil {
t.Fatal(errors.Errorf("%s: %w", qry, err))
}
t.Log("--- Registrations ---")
for rows.Next() {
var regID, table string
if err := rows.Scan(®ID, &table); err != nil {
t.Error(err)
break
}
t.Logf("%s: %s", regID, table)
}
t.Log("---------------------")
rows.Close()
testDb.Exec("INSERT INTO test_subscr (i) VALUES (1)")
testDb.Exec("INSERT INTO test_subscr (i) VALUES (0)")
t.Log("events:", events)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。