1

有谁知道是否可以配置 Oracle 会话或连接,以便每个持久化的字符串都自动大写?

例如,如果我调用这样的 SQL:“INSERT INTO STUDENT (name) VALUES ('john doe')”

我表中的信息将像这样持久化:

STUDENT
--------------------
ID   | 1
NAME | JOHN DOE

我检查了这个条目,但找不到这样的东西:http: //docs.oracle.com/cd/B19306_01/server.102/b14225/ch3globenv.htm#sthref186

谢谢!

4

1 回答 1

5

没有会话级别的配置参数,没有。

您可以在表上编写一个触发器,该触发器STUDENT会自动以大写形式存储数据,但您需要为每个表都这样做。

CREATE TRIGGER trg_student
  BEFORE INSERT ON student
  FOR EACH ROW
BEGIN
  :new.name := upper( :new.name );
END;

根据您尝试解决的问题,您可能会将会话的 NLS 设置设置为忽略大小写,以便字符串“John Doe is considered to be equal to the stringJOHN DOE”。选项、限制和缺点会因 Oracle 的特定版本而异。

于 2012-04-16T22:45:32.763 回答