存储
过程
就是作为可执行对象存放在数据库
中
的一个或多个SQL命令。
定义总是很抽象。
存储
过程
其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库
中
的(这里我们只谈SQL Server)。如果我们通过创建
存储
过程
以及在ASP
中
调用
存储
过程
,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:
第一、大大提高效率。
存储
过程
本身的执行速度非常快,而且,调用
存储
过程
可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码
中
,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
oracle
存储
过程
的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE
存储
过程
名字
参数1 IN NUMBER,
参数2 IN NUMBER
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END
存储
过程
名字
2.SELECT INTO STATEMENT
将select查询的结果存入到变量
中
,可以同时将多个列
存储
多个变量
中
,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END
;
3.
IF
判断
IF
V_TEST=1 THEN
BEGIN
do something
END
;
END
IF
;
4.while 循环
WHILE V_TEST=1 LOOP
BEGIN
END
;
END
LOOP;
condition1和condition2是布尔表达式,其值为真或假。
statements1、statements2、statements3是PL/SQL语句。
条件逻辑的流程如下:
如果condition1为真,就执行sta
含义解释:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
该函数的含义如下: 代码如下:
IF
条件=值1 THEN RETURN(翻译值1)ELS
IF
条件=值2 THEN RETURN(翻译值2) ……ELS
IF
条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)
END
IF
decode(字段或字段的运算,值1,值2,值3)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
使用
方法:1、比较大小
1:不管
过程
有没有编译成功,但是这个
过程
总是会生成的,你可以看到他们打小红叉了(如果有错,编译不成功);pl/sql 程序块其实是匿名的,而
过程
是有命名的,这样它可以存在数据库里面!因而他们的语法是一样,Pl/sql的意思是可编程的SQL,是对SQL的扩展!
create or replace procedure test_p is begin
if
1=2 then &nbs...
b:='asdf';
if
length(a)>length(b) then
dbms_output.put_line('字符串"'||a||'"的长度比字符串"'||b||'"的长度大');
ORA-01406错误通常是由于查询结果
中
存在空值,而
Oracle
不允许将空值转换为非空值的数据类型,例如数字或日期。解决此问题的方法是
使用
NVL函数或COALESCE函数将空值替换为默认值,或者
使用
CASE语句根据情况返回不同的值。例如:
```sql
SELECT COALESCE(column1, 'N/A'), NVL(column2, 0), CASE WHEN column3 IS NULL THEN 'Unknown' ELSE column3
END
FROM my_table;
此查询将在查询结果
中
将任何空值替换为默认值,以避免ORA-01406错误。