数据库存储过程怎么写
1.数据库存储过程怎么编写
右键存储过程,新建一个存储过程,代码如下,
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DIY_存储过程名]
AS
BEGIN
SET NOCOUNT ON; --不记录影响的行数
END
GO
上面是SQL给我们的模板,我们修改模板如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DIY_存储过程名]
@UserID int --输入函数
AS
BEGIN
SET NOCOUNT ON; --不记录影响的行数
select '@UserName' = UserName from Users where UserID = @UserID --执行操作
END
GO
在查询分析器中调用如下:
Exec DIY_存储过程名 @UserID = 'cj0001'
这是最基本的,然后你再学习用output返回一个值,或返回一个数据集
再学习事务,再学习自定义函数,跟存储过程一样容易
我用了两天时间学会了,入门很容易,现在基本上复杂点的都写存储过程,
2.如下题请经常写存储过程懂数据库Oracle或者你知道如何写都帮帮我更
create procedure test is cursor custom_list is select id from khexpinfo; custom_dic custom_list%ROWTYPE;my_custom_id in number(20);begin for custom_dic in custom_list loopbeginselect distinct b.customer_id into my_custom_id from centermaterialusedetail c ,batchinfo b where c.export_uid=custom_dic.id and c.batchinfo_uid=b.fuid;update khexpinfo set customer_id=my_custom_id where id=custom_dic.id;exception when others thenmy_custom_id:=0;end;end loop;commit;end;。
3.什么是数据库存储过程
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
在SQL Server 的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统过程主要存储在master 数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server 提供支持。通过系统存储过程,MS SQL Server 中的许多管理性或信息性的活动(如了解数据库对象、数据库信息)都可以被顺利有效地完成。尽管这些系统存储过程被放在master 数据库中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。
4.Oracle数据库的存储过程怎么写
Oracle存储过程基本语法: CREATE OR REPLACE PROCEDURE 存储过程名 IS BEGIN NULL; END;解释: 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体。
行3: BEGIN关键词表明PL/SQL体的开始。 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句; 行5: END关键词表明PL/SQL体的结束。
5.数据库的存储过程怎么写
1,调用没有参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call nono}"
'set rs=cmc.exe 或者cmd.execute
set rs=cmd.Execute()
%>
2,一个输入的参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call oneinput(?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )
cmd("@aaa")=100
cmd.Execute()
%>
3,一个输入参数和一个输出的参数
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText = "{call oneinout(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput)
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
cmd.Execute()
bbb=cmd("@bbb")
%>
4,一个输入参数,一个输出参数,和一个返回值
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{?=call onereturn(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@return_value",adInteger,adParamReturnValue )
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput )
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
cmd.Execute()
bbb=cmd("@bbb")
rrr=cmd("@return_value")
%>
6.SQL数据库这个存储过程应该如何写
两个方案:
1、使用触发器,在A库的a表中建立 Insert,Update 触发器,使在数据写入或更新时,将变更实时写入B库b表;
好处:简单、实时;缺点:远程实时访问以及触发器的方式,风险大,当B不能访问或反应缓慢时,A库的a表就无法更新;
2、使用计划任务:好处:可避免上述的所有缺点;不足:实现稍复杂些,且不是实时同步;步骤:
1)为A库a表建立日志表a_log,用于详细记录对a表的插入、删除、和Update操作,并有时间记录;
2)为A库a表建立Insert,Update,Delete 触发器,将对a表的这些操作过程记录在a_log表中(即:对哪个ID做了什么操作);
3)在B库中建立存储过程,用于读取A库a_log表的信息,并据此用a表数据更新b表数据。可采用增量方式,也就是每次操作时都取上次成功的时间点之后的数据;
4)在B库建立计划任务,定时调用上述的存储过程。按需要,可以几分钟一次,也可以几天一次。
7.mysql数据库存储过程怎么写
创建存储过程
mysql>delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.
mysql>create procedure sp_test(IN pi_id int, OUT po_name varchar(10))
->begin
->select * from test.tb_test;
->select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id;
->end
->$
Query OK, 0 rows affected (0.00 sec)
mysql>delimiter ; -- 恢复分号作为分隔终止符号
5.调用存储过程
mysql>set @po_name='';
Query OK, 0 rows affected (0.00 sec)
mysql>call sp_test(1,@po_name);
8.SQL数据库这个存储过程应该如何写
两个方案:1、使用触发器,在A库的a表中建立 Insert,Update 触发器,使在数据写入或更新时,将变更实时写入B库b表;好处:简单、实时;缺点:远程实时访问以及触发器的方式,风险大,当B不能访问或反应缓慢时,A库的a表就无法更新;2、使用计划任务:好处:可避免上述的所有缺点;不足:实现稍复杂些,且不是实时同步;步骤:1)为A库a表建立日志表a_log,用于详细记录对a表的插入、删除、和Update操作,并有时间记录;2)为A库a表建立Insert,Update,Delete 触发器,将对a表的这些操作过程记录在a_log表中(即:对哪个ID做了什么操作);3)在B库中建立存储过程,用于读取A库a_log表的信息,并据此用a表数据更新b表数据。
可采用增量方式,也就是每次操作时都取上次成功的时间点之后的数据;4)在B库建立计划任务,定时调用上述的存储过程。按需要,可以几分钟一次,也可以几天一次。
