Oracle存储过程基本语法: CREATE OR REPLACE PROCEDURE 存储过程名 IS BEGIN NULL; END;解释: 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟...
创新互联建站专注于耿马网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供耿马营销型网站建设,耿马网站制作、耿马网页设计、耿马网站官网定制、成都小程序开发服务,打造耿马网络公司原创品牌,更为您提供耿马网站排名全网营销落地服务。
‘’符号在SQL中有特殊含义,所以在SQL中想要写入,需要特殊处理。如下SQL语句就不能正确运行:SQL select 'ab' from dual;处理方法:用Oracle的字符串处理函数chr处理。chr(38)表示 符号如:select chr(38) from dual;结果:SQL select 'a'||chr(38)||'b' from dual;结果:ab其他不能处理的特殊符合,也用类似的方式处理。如果不知道该特殊符号的值,可以调用ascii函数处理如:select ascii('') from dual;结果:38
and优先级大于or。
加括号则优先执行or,后执行and;不加括号,会先执行and,再执行or,所以查询结果不同。举例:
数据库存在数据:
Thomas Carter
William Carter
Thomas King
执行:SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
结果为:
Thomas Carter
William Carter
执行:SELECT * FROM Persons WHERE FirstName='Thomas' OR FirstName='William'
AND LastName='Carter'
结果为:
Thomas Carter
William Carter
Thomas King
扩展资料:
ORACLE数据库特点:
1、完整的数据管理功能:
(1)数据的大量性
(2)数据的保存的持久性
(3)数据的共享性
(4)数据的可靠性
2、完备关系的产品:
(1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;
(2)保证访问的准则
(3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
(4)数据物理性和逻辑性独立准则
3、分布式处理功能:ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的关系型产品构成。
4、用ORACLE能轻松的实现数据仓库的操作。
参考资料:百度百科-Oracle数据库
表示後面需要用户输入资料,
比如SQL:select * from table where user_id = n
执行这句SQL,会跳出来一个NAME为“N”的输入框,要求你输入内容,
如果你要查询内容为“TEST”,那麼这句SQL等效于下面
select * from table where user_id = ‘TEST’
一、符号的处理方案
1、在前面加上语句set define off
首先要理解是做什么的,这个符合在Oracle中表示替代变量,执行时会提示用户输入,然后以及后面的字符会替换为用户输入的字符。
set define off的作用是关闭替代变量功能。当然你还可以把替代变量改为其它符号,比如改为*号,输入这个命令:set define *
2、在SQL语句中将分拆并替换成chr(38)
38是的ASCII码,实例sql
3、分拆出号,这也是最简单直接的方法
二、符号'的处理方案
1、直接转义
2、分拆转义
3、分拆并替换成chr(39)
用to_char就可以把十进制转成十六进制:
select to_char(31, '0x') from dual;
结果:1f
1.将十进制的数转换为十六进制的数请使用to_char函数。
数据库中16进制的表达是按照字符串来描述的,所以将十进制的数转换为十六进制的数使用to_char函数
BYS@bys1select to_char(10,'xxx'), to_char(42,'xxx') from dual;
TO_C TO_C
---- ----
a 2a
2.将十六进制的数转换为十进制的数请使用to_number函数。
如下,16进制A是10.2A是2*16+A=42.注意xxx,如果转换的数比较大,要多写几个,避免位数不足而报错。
BYS@bys1select to_number('a','xxx'), to_number('2a','xxx') from dual;
TO_NUMBER('A','XXX') TO_NUMBER('2A','XXX')
-------------------- ---------------------
10 42
####################################################
ORACLE未提供二进制与十进制互转的函数,可以自己创建。以下十进制与二进制转换脚本引自惜纷飞博客,感谢!
3.十进制转换二进制--使用自定义函数
CREATE OR REPLACE FUNCTION NUMBER_TO_BIT(V_NUM NUMBER)
RETURN VARCHAR IS V_RTN VARCHAR(8);--注意返回列长度
V_N1 NUMBER;
V_N2 NUMBER;
BEGIN
V_N1 := V_NUM;
LOOP
V_N2 := MOD(V_N1, 2);
V_N1 := ABS(TRUNC(V_N1 / 2));
V_RTN := TO_CHAR(V_N2) || V_RTN;
EXIT WHEN V_N1 = 0;
END LOOP;
--返回二进制长度
SELECT lpad(V_RTN,8,0)
INTO V_RTN
FROM dual;
return V_RTN;
end;
BYS@bys1col a255 for a20
BYS@bys1col a1 for a20
BYS@bys1select number_to_bit(255) as a255,number_to_bit(1) as a1 from dual;
A255 A1
-------------------- --------------------
11111111 00000001
4.二进制转换十进制--使用自定义函数
CREATE OR REPLACE FUNCTION BIT_TO_NUMBER(P_BIN IN VARCHAR2) RETURN NUMBER AS
V_SQL VARCHAR2(30000) := 'SELECT BIN_TO_NUM(';
V_RETURN NUMBER;
BEGIN
IF LENGTH(P_BIN) = 256 THEN
RAISE_APPLICATION_ERROR(-20001, 'INPUT BIN TOO LONG!');
END IF;
IF LTRIM(P_BIN, '01') IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20002, 'INPUT STR IS NOT VALID BIN VALUE!');
END IF;
FOR I IN 1 .. LENGTH(P_BIN) LOOP
V_SQL := V_SQL || SUBSTR(P_BIN, I, 1) || ',';
END LOOP;
V_SQL := RTRIM(V_SQL, ',') || ') FROM DUAL';
EXECUTE IMMEDIATE V_SQL
INTO V_RETURN;
RETURN V_RETURN;
END;
BYS@bys1select bit_to_number('11111111') from dual;
BIT_TO_NUMBER('11111111')
-------------------------
255