如何避免Σ;在plsql中编译时转向S?
我们打算在plsql包中使用∑符号。当我们编译包并执行时,∑符号变为“S”。有什么方法可以避免这种情况吗 以下是一个例子:如何避免Σ;在plsql中编译时转向S?,plsql,Plsql,我们打算在plsql包中使用∑符号。当我们编译包并执行时,∑符号变为“S”。有什么方法可以避免这种情况吗 以下是一个例子: declare -- Local variables here i varchar2(10); begin dbms_output.put_line('hello - Σ '); end; 输出 hello - S 这不是有效的ASCII字符,因此您需要使用unicode,例如: dbms_output.put_line('hello - ' || uni
declare
-- Local variables here
i varchar2(10);
begin
dbms_output.put_line('hello - Σ ');
end;
输出
hello - S
这不是有效的ASCII字符,因此您需要使用unicode,例如:
dbms_output.put_line('hello - ' || unistr('\03A3') || ' ');
请注意,dbms_输出可能不会显示正确的字符,具体取决于您的字符集。PL/SQL源代码将保存到中的数据库中。使用UTF-8的数据库也可以在PL/SQL源代码中使用UTF-8:
with nls_parameters as (
SELECT 1 as depth, 'SESSION' as "LEVEL", parameter, value FROM nls_session_parameters
union all
SELECT 2 as depth, 'INSTANCE' as "LEVEL", parameter, value FROM nls_instance_parameters
union all
SELECT 3 as depth, 'DATABASE' as "LEVEL", parameter, value FROM nls_database_parameters
)
select "LEVEL", parameter, '''' || value || '''' as value
from nls_parameters
where parameter = 'NLS_CHARACTERSET'
order by parameter, depth
;
LEVEL PARAMETER VALUE
-------- ---------------- ----------
DATABASE NLS_CHARACTERSET 'AL32UTF8'
例如:
$ cat /tmp/foo.sql
create procedure foo is
begin
dbms_output.put_line('hello - Σ ');
dbms_output.put_line('μεταφρασμένο από το Google!');
end;
/
$
SQL> @/tmp/foo
Procedure created.
SQL> exec foo
hello - Σ
μεταφρασμένο από το Google!
PL/SQL procedure successfully completed.
SQL>
另一个例子:
$ cat /tmp/foo.sql
create procedure fooΣ is
Σ number := 100;
begin
dbms_output.put_line('hello - Σ = ' || Σ);
dbms_output.put_line('μεταφρασμένο από το Google!');
end;
/
SQL> @/tmp/foo
Procedure created.
SQL> exec fooΣ
hello - Σ = 100
μεταφρασμένο από το Google!
PL/SQL procedure successfully completed.
SQL>
注意,我使用的是理解UTF-8的linux终端