在这里先感谢一下itpub高手的帖子答复
Q:
看到的oracle中的for循环or i in 1..100 loop,i都是从1,2,3这样递增的,可是我这里需要i从01,02,03这样递增,9开始是09,10,11,12.
请问这样的for循环怎么写。
具体问题可见http://www.itpub.net/thread-1620912-1-1.html,我想在触发器中加入循环变量,精简我的触发器长度。
ps:我是新手,谢谢大家的帮助
A:
lpad('tech', 7); would return ' tech'
lpad('tech', 2); would return 'te'
lpad('tech', 8, '0'); would return '0000tech'
lpad('tech on the net', 15, 'z'); would return 'tech on the net'
lpad('tech on the net', 16, 'z'); would return 'ztech on the net'
每次看到itpub的答复都很激动,一个恢复解决问题。
lpad函数说明
语法格式如下:
lpad( string, padded_length, [ pad_string ] )
string
准备被填充的字符串;
padded_length
填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
pad_string
填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。
下面说plsq中的块。
经常看到有人和书上直接写declare,也不在触发器或者存储过程中,可是照样使用,比如:http://zhidao.baidu.com/question/113921713.html
1,我刚开始直接在plsql中的查询窗口sql window使用,报错:
13:51更新:
sql windows窗口也是可以显示的,在第二列就是output,仅仅select不行
2,想到在测试窗口test window,通过(需要点击左上角的start debugger按钮,然后点击run)
-- Created on 2012-6-13 by DELL declare -- Local variables here i number; begin -- Test statements here for i in 1..100 loop dbms_output.put_line(lpad(i,2,'0')); end loop; end;
下面是结果
拓展:
1 Command window实现了SQL*Plus的所有功能,允许运行sql*plus命令,sql命令,sql脚本。
2 SQL window用于执行sql语句,显示sql输出,执行统计信息。(测试sql语句,查看表中的数据,更新数据)
例如 desc table(查看表结构)不能在SQL window中执行,必须在Command window中才能执行。
3 Program window中创建一个存储过程(或者直接在plsql左边对应的procedures和trigger右键新建),如下:
create or replace procedure TEST is begin DBMS_SESSION.set_nls('NLS_DATE_FORMAT','''YYYY-MM-DD HH24:MI:SS'''); DBMS_OUTPUT.PUT_LINE('HelloWorld!'); DBMS_OUTPUT.put_line(SYSDATE); end TEST;
需要注意,SET_NLS的第二个参数VALUE
输入的值除了需要的格式外,还需要包含引号,否则会引发错误(选项缺失或无效)
在Command window中执行(或者在Test window中测试),如下:
set serveroutput on
exec TEST();
或者begin
2 test();
3 end;
4 / ......