• 首页>范文 > 范文
  • 数据库存储过程怎么写

    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库建立计划任务,定时调用上述的存储过程。按需要,可以几分钟一次,也可以几天一次。

    发表评论

    登录后才能评论