此过程为字符串中的每个字符打印ASCII
代码。
如果在TOAD中执行,它将打印以下ASCII码:55 48 48 32 32 32 32 32 32 32 49
。
如果通过SQLPLUS
服务器上的UNIX
执行并将DBMS_OUTPUT.PUT_LINE (v_String);
的输出假脱机到文本文件,请复制该输出并将其分配给v_String并在TOAD中执行该过程,我得到以下ASCII
代码55 48 48 9 32 32 49
。
为什么要用9代替32 32 32 3232。本质上是一个制表符。
CREATE OR REPLACE PROCEDURE My_Test
AS
v_String VARCHAR2 (25);
BEGIN
v_String := RPAD ('700', 10) || '1';
-- v_String:='700 1';
DBMS_OUTPUT.PUT_LINE (v_String);
DBMS_OUTPUT.PUT_LINE ('');
FOR i IN 1 .. LENGTH (v_String)
LOOP
DBMS_OUTPUT.PUT_LINE (ASCII (SUBSTR (v_String, i, 1)));
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
答案 0 :(得分:3)
这是Unix上SQL * Plus的默认行为,由its tab
setting控制:
SET TAB {ON | OFF}
确定SQL * Plus如何格式化终端输出中的空白。
response = str(api_return[0]) response.replace("false", "False") response_json = json.loads(response)
使用空格来格式化输出中的空白。OFF
使用ON
字符。TAB
设置是每八个字符。TAB
的默认值取决于系统。
SQL * Plus在输出到终端时正在“有用”地替换选项卡。与PL / SQL或TAB
无关-您将看到相同的内容:
dbms_output
您看到的是前三个字符,然后是一个制表符,而不是五个空格,最多可以容纳8个字符,然后是最后两个空格和最后一个字符。
在您的SQL * Plus会话中,在开始之前设置do select '700 1' from dual;`
。
您可能希望在脚本或登录文件中进行设置,以使其始终适用。
(请注意,这仅适用于终端输出,不适用于假脱机文件;您的问题涉及假脱机,但我认为您实际上必须以其他方式重定向或捕获输出。)