Oracle PL / SQL 打印字符串的每个字母
Oracle PL / SQL printing each letter of a string
我需要单独打印单词 'Hello' 的每个字母,我这样写:
Declare
c1 Number:=1;
c2 Varchar2(5);
begin
for c1 in 1..5
loop
select substr('Hello' , c1 , 1 ) into c2 from dual;
dbms_output.put_line(c2);
end loop;
end;
但它跳过了前两个字母,结果是
l
l
o
任何想法可能是什么问题?
谢谢。
您的脚本:
declare
c1 number := 1;
c2 varchar2(5);
begin
for c1 in 1 .. 5 loop
select substr('Hello', c1, 1) into c2 from dual;
dbms_output.put_line(c2);
end loop;
end;
输出如下:
H
e
l
l
o
我觉得一切都很好。
你得到什么输出?
你写的脚本是对的
Declare
c1 Number:=1;
c2 Varchar2(5);
begin
for c1 in 1..5
loop
select substr('Hello' , c1 , 1 ) into c2 from dual;
dbms_output.put_line(c2);
end LOOP;
end;
输出:-
H
e
l
l
o
可以一次性完成 select 至:
SQL> select substr('hello', level, 1) Letter
2 from dual
3 connect by level <= length('hello');
L
-
h
e
l
l
o
SQL>
最好设置循环结束限制 For i in 1..v_length
这样您就不必在每次 运行 时都更改 Loop
限制。
Create or replace procedure print_string( IN_string IN varchar2 )
AS
v_length number(10);
v_out varchar2(20);
Begin
v_length := length(IN_string);
for i in 1..v_length
Loop
v_out := substr(IN_string,i,1) ;
DBMS_OUTPUT.PUT_LINE(v_out);
End loop;
DBMS_OUTPUT.PUT_LINE('Text printed: ' || IN_string);
End;
-- Procedure created.
BEGIN
print_string('Hello');
END;
-- Output:
H
e
l
l
o
Text printed: Hello
Statement processed.
我需要单独打印单词 'Hello' 的每个字母,我这样写:
Declare
c1 Number:=1;
c2 Varchar2(5);
begin
for c1 in 1..5
loop
select substr('Hello' , c1 , 1 ) into c2 from dual;
dbms_output.put_line(c2);
end loop;
end;
但它跳过了前两个字母,结果是
l
l
o
任何想法可能是什么问题? 谢谢。
您的脚本:
declare
c1 number := 1;
c2 varchar2(5);
begin
for c1 in 1 .. 5 loop
select substr('Hello', c1, 1) into c2 from dual;
dbms_output.put_line(c2);
end loop;
end;
输出如下:
H
e
l
l
o
我觉得一切都很好。
你得到什么输出?
你写的脚本是对的
Declare
c1 Number:=1;
c2 Varchar2(5);
begin
for c1 in 1..5
loop
select substr('Hello' , c1 , 1 ) into c2 from dual;
dbms_output.put_line(c2);
end LOOP;
end;
输出:-
H
e
l
l
o
可以一次性完成 select 至:
SQL> select substr('hello', level, 1) Letter
2 from dual
3 connect by level <= length('hello');
L
-
h
e
l
l
o
SQL>
最好设置循环结束限制 For i in 1..v_length
这样您就不必在每次 运行 时都更改 Loop
限制。
Create or replace procedure print_string( IN_string IN varchar2 )
AS
v_length number(10);
v_out varchar2(20);
Begin
v_length := length(IN_string);
for i in 1..v_length
Loop
v_out := substr(IN_string,i,1) ;
DBMS_OUTPUT.PUT_LINE(v_out);
End loop;
DBMS_OUTPUT.PUT_LINE('Text printed: ' || IN_string);
End;
-- Procedure created.
BEGIN
print_string('Hello');
END;
-- Output:
H
e
l
l
o
Text printed: Hello
Statement processed.