And*_*aev 4 oracle plsql xmldom dom-node
是否可以比较原始数据类型的变量?我正在使用XMLDOM.DomNodes,它是一个具有一个字段的记录:
TYPE DOMNode IS RECORD (id RAW(12));
Run Code Online (Sandbox Code Playgroud)
所以我有两个节点,那么我可以通过它们的id字段来比较它们吗?我尝试了几个样品,乍一看似乎有效:
FUNCTION findParentNode(p_node IN xmldom.domnode) RETURN PLS_INTEGER
AS
nRetVal PLS_INTEGER;
BEGIN
FOR i IN ParentNodes.First .. ParentNodes.Last
LOOP
IF ParentNodes(i).id = p_node.id THEN
nRetVal := i;
EXIT;
END IF;
END LOOP;
RETURN nRetVal;
END;
Run Code Online (Sandbox Code Playgroud)
但Oracle文档中有一两件事让我担心: 原始数据是像VARCHAR2数据,只是PL/SQL不解释原始数据 是什么意思?如果pl/sql不解释raw,那么它可以比较吗?
=
如果要查看两个RAW变量是否具有相同的值,可以使用运算符.
SQL> DECLARE
2 a RAW(255) := utl_raw.cast_to_raw('abcdef');
3 b RAW(50) := utl_raw.cast_to_raw('abcdef');
4 BEGIN
5 IF a = b THEN
6 dbms_output.put_line('a = b');
7 ELSE
8 dbms_output.put_line('a != b');
9 END IF;
10 END;
11 /
a = b
Run Code Online (Sandbox Code Playgroud)
当文档声明RAW类似于VARCHAR2但未解释时,这意味着您可以像对待VARCHAR2一样影响,存储甚至比较RAW变量,但二进制值永远不会与字符集匹配.
另一方面,VARCHAR2变量可以转换,因为数据库的字符集和客户端之间不匹配.
RAW是一串字节而不是一串字符.
归档时间: |
|
查看次数: |
7549 次 |
最近记录: |