存储过程实现
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procere)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
B. 怎么样利用存储过程实现(oracle )的添加、删除、查询、修改啊
列个表,里边我一样给你写个例子,你看着学学,我尽量给你做出注释
--建一个学生表
create table student (id int,name varchar2(10));
--插入两条测试数据
insert into student values (1,'张三');
insert into student values (2,'李四');
commit;
-------------用存储过程添加id为3,姓名为王五的学生-----------
create or replace PROCEDURE P_INSERT
(v_id int,--定义id变量
v_name varchar2--定义姓名变量)
is
begin
insert into student values (v_id,v_name);--执行插入操作
commit;
end;
执行的时候用下边的
BEGIN
p_insert(3,'王五');
END;
然后select * from student;
你会发现多了3 王五 这条数据
---------------用存储过程删除id为3的学生------------
create or replace PROCEDURE P_DELETE
(v_id int)--定义变量id
is
begin
delete from student where id=v_id;--执行删除操作
commit;
end;
执行
BEGIN
p_delete(3);
END;
执行完上边后执行
select * from student;
你会发现id为3的学生没了
---------------用存储过程查询id为2的学生姓名------------
create or replace PROCEDURE P_SELECT
(v_id int)--定义输入变量id
is
v_name varchar2(10);--定义输出变量name
begin
select name into v_name from student where id=v_id;--执行查询
dbms_output.put_line('学生姓名为:'||v_name);--输出结果
end;
执行
BEGIN
p_select(2);
END;
输出的结果就是id为2的学生姓名
-----------用存储过程查询id为1的学生姓名修改为赵六----------
create or replace PROCEDURE P_UPDATE
(v_id int,--定义要修改的id
v_name varchar2)--定义要修改后的名字
is
begin
update student set name=v_name where id=v_id;--执行修改操作
commit;
end;
执行
BEGIN
P_UPDATE(1,'赵六');
END;
然后你再
select * from student;
你会发现id为1的已经为赵六了
上边这些都是最简单的存储过程,在实际过程中肯定没这么简单
还有,我让你执行的
BEGIN
P_UPDATE(1,'赵六');
END;
这种东西可以当做oracle的job调用,可以定时执行
再有不懂的你再问吧,上边的仅做参考
累死我了,哈哈
C. 怎么在VS中调用存储过程来实现操作功能
额
D. 如何通过SQL存储过程实现参数可变的查询
下面是一个 Oracle 的存储过程的例子。
通过参数的默认值来设置。
SQL> CREATE OR REPLACE PROCEDURE HelloWorld3 (
2 p_user_name VARCHAR2,
3 p_val1 VARCHAR2 DEFAULT ' Good Moning,',
4 p_val2 VARCHAR2 DEFAULT ' Nice to Meet you'
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_val1 || p_val2 || '!'
);
8 END HelloWorld3;
9 /
Procere created.
下面是 只穿部分参数的情况。
SQL> BEGIN
2 HelloWorld3('Edward');
3 HelloWorld3('Edward', ' Good Night,');
4 HelloWorld3('Edward', ' Good Night,', 'Bye');
5 END;
6 /
Hello Edward Good Moning, Nice to Meet you!
Hello Edward Good Night, Nice to Meet you!
Hello Edward Good Night,Bye!
PL/SQL procere successfully completed.
下面用于说明当最后2个参数是有默认的时候,如何跳过中间那个。
SQL> BEGIN
2 HelloWorld3('Edward');
3 HelloWorld3('Edward', p_val1 => ' Good Night,');
4 HelloWorld3('Edward', p_val1 => ' Good Night,', p_val2 => 'Bye');
5 HelloWorld3('Edward', p_val2 => ' HeiHei ');
6 END;
7 /
Hello Edward Good Moning, Nice to Meet you!
Hello Edward Good Night, Nice to Meet you!
Hello Edward Good Night,Bye!
Hello Edward Good Moning, HeiHei !
PL/SQL procere successfully completed.
E. sql 存储过程是怎么实现的 简单的例子和解释!
存储过程就是一组保存在数据库中的sql语句,在需要的时候可以调用
最简单的,比如
create procere test as
delete from t_1; ---删除t_1表的所有记录
在sql server查询分析器执行时:
exec test; --执行过程test,删除了表t_1的所有记录
当然,没有人这样使用存储过程,存储过程可以接受参数,处理大量sql语句,并返回结果。
当在编写软件的过程中,碰到需要进行复杂的数据库操作时,可能需要大量的sql语句,这时候可以先在数据库中创建存储过程,将sql语句都写在存储过程里,可以视情况加入参数,也可以返回处理结果。编写软件时,在适当的地方引用并执行这个存储过程就好了,至于怎么引用,不同的软件开发语言有不同的语法。
存储过程是预编译的,这样可以提高执行效率,对于软件代码的维护也有好处
F. mysql利用存储过程实现批量处理数据的简单操作
-- 判断存储test是否存在,如果存在则删除
DROP PROCEDURE IF EXISTS test;
-- 创建存储过程
CREATE PROCEDURE test()
BEGIN
-- 声明循环变量int型 i
DECLARE i INT DEFAULT 1;
-- 设置i=0
set i=0;
-- 循环100次
while i<100 do
-- if判断i为偶数
if i%2 = 0 THEN
-- 要实现的操作 CONCAT(str1,str2,...) concat函数用于拼接子串和数字类型
INSERT into user(name,addr) VALUES(CONCAT('test',i,'ss'),'addr');
end if;
-- i自增
set i=i+1;
END WHILE;
END;
-- 调用存储过程
CALL test()
G. SQL实现存储过程
提供4中方案:
1、可以用sql作业的方式来定时执行。
2、编写服务,定时执行存储过程。
3、利用ado.net的方式,timmer定时执行来实现。
4、如果是每天的某个时间段来执行的话,可以配置windows计划任务来执行程序。程序中执行你的存储过程。