求SQL高手分析一段话
to_base,to_dec 这两个是oracle的存储过程。
to_base:入力参数有2个,p_dec , p_base 都是数字类型。返回值是字符串l_str。
如果入力参数p_dec是小数(小数位不是0)或者是小于0的话,就异常结束了
如果入力参数正常,那么就会循环的执行下面的操作,知道临时变量l_num=0就退出循环,然后返回拼接的字符串l_str。
第一次执行的时候l_num的值就是入力参数p_dec。
l_num除以p_base的余数加1作为在【固定字符‘0123456789ABCDEF’】中查找对应的位置。
例如入力参数p_dec除以p_base的余数加1是5,那么第五位就是4,这个4就会被拼接在返回值l_str上。
l_num的值重新被计算 = l_num除以p_base的商
to_dec:自己分析一下。
to_hex,to_bin,to_oct:调用to_base
select '#define SGA_BASE0x'||addr from x$ksmmem where rownum < 2;--检索表x$ksmmem中rownum < 2的数据,检索的字段是:固定值【'#define SGA_BASE0x'】拼接字段addr的值
其余的自己分析
select '#define NEXT '||
((to_dec(e.addr)-to_dec(s.addr)))
from (select addr from x$ksusecst where rownum < 2) s,
(select max(addr) addr from x$ksusecst where rownum < 3) e ;
检索字段是:固定值【#define NEXT 】拼接字段 ((to_dec(e.addr)-to_dec(s.addr)))
其中 ((to_dec(e.addr)-to_dec(s.addr))) 就是调用上面做成的存储过程
检索表:从 x$ksusecst 中检索出来的rownum < 2的数据 和 检索 rownum < 3的数据中字段addr最大的那条数据 的两个结果的合集1.建立一个叫admin的表,其中表的字段属性为:
id : mediumint(中整数)类型,无符号数,不允许空值,自增长
type : enum(字符串)类型,值只能为('system','manager','editor')其中的一个,不允许空值,缺省值为'editor'
user : varchar(可变长字符串)类型,不允许空值,缺省值为‘’
pass: varchar(可变长字符串)类型,不允许空值,缺省值为‘’
email: varchar(可变长字符串)类型,不允许空值,缺省值为‘’
modulelist :text(非二进制字符串)类型,不允许空值,comment 后的字符时此字段的注释
主键为id字段,数据库引擎为myisam,缺省的字符集为utf8,auto_increment=7是指id字段的起始值为7
2.对表admin一次性插入3条记录,其中的数据是和(`id`, `typer`, `user`, `pass`, `email`, `modulelist`) 的顺序一一对应的。
建议:多看看mysql的手册,上面介绍得很清楚的
题外话:id起始值为7,是为了和下面的insert语句中插入的数据部会起主键冲突(插入的id的值分别为1,6,5)。
放砂仁熬什么稀饭好
病情分析:你好,砂仁在煎煮时需要后下,一般都是第二遍煎煮时放进去意见建议:建议正确使用中药材,这样才能发挥更好的药效8668
搜一下:放砂仁熬什么稀饭好
- 上一篇: 中兴股票波浪理论案例分析(波浪理论案例分析实践报告)
- 下一篇: 分析毛细血管的股票(毛细血管分析图)