精华内容
下载资源
问答
  • ---创建存储过程,本部分全部复制粘贴至查询分析器执行即可-----createprocedureget_nxt_id_P@objtypeint,@NewSeqValuebigintoutputasbeginsetNOCOUNTONif(@objtype=0)begininsertint...---创建存储过程,本部分全部...

    ---创建存储过程,本部分全部复制粘贴至查询分析器执行即可-----createprocedureget_nxt_id_P@objtypeint,@NewSeqValuebigintoutputasbeginsetNOCOUNTONif(@objtype=0)begininsertint...

    ---创建存储过程,本部分全部复制粘贴至查询分析器执行即可-----

    create procedure get_nxt_id_P

    @objtype int,

    @NewSeqValue bigint output

    as

    begin

    set NOCOUNT ON

    if(@objtype=0)

    begin

    insert into seq_alttrade(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_alttrade')

    delete from seq_alttrade

    return 1;

    end

    else if(@objtype=1)

    begin

    insert into seq_alert(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_alert')

    delete from seq_alert

    return 1;

    end

    else if(@objtype=2)

    begin

    insert into seq_cust(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_cust')

    delete from seq_cust

    return 1;

    end

    else if(@objtype=3)

    begin

    insert into seq_acct(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_acct')

    delete from seq_acct

    return 1;

    end

    else if(@objtype=4)

    begin

    insert into seq_trade(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_trade')

    delete from seq_trade

    return 1;

    end

    else if(@objtype=5)

    begin

    insert into seq_oppinfo(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_oppinfo')

    delete from seq_oppinfo

    return 1;

    end

    else if(@objtype=6)

    begin

    insert into seq_oppinfobank(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_oppinfobank')

    delete from seq_oppinfobank

    return 1;

    end

    else if(@objtype=7)

    begin

    insert into seq_custmap(SeqVal) values ('a')

    set @NewSeqValue = IDENT_CURRENT('seq_custmap')

    delete from seq_custmap

    return 1;

    end

    else

    begin

    set @NewSeqValue =0;

    return -1;

    end

    end

    GO

    请问以上的SQL server的 存储过程写法如何变成 mysql 的写法呢。

    展开

    展开全文
  • 展开全部一、多数指令是相同的,包括创建和...二、很多细微的指令有不同,具体如下(不仅):1 mysql支持enum,和set类型,sql server不支持。2 mysql不支持nchar,nvarchar,ntext类型。3 mysql的递增语句是AUTO_INCR...

    展开全部

    一、多数指令是相同的,包括创建和修正存储过32313133353236313431303231363533e59b9ee7ad9431333365646262程的指令。

    二、很多细微的指令有不同,具体如下(不仅):

    1 mysql支持enum,和set类型,sql server不支持。

    2 mysql不支持nchar,nvarchar,ntext类型。

    3 mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1)。

    MYSQL:create table basic(id int key auto_increment,name varchar(20));

    MSSQL: create table basic(id int identity(1,1) , name varchar(20))

    4 msms默认到处表创建语句的默认值表示是((0)),而在mysql里面是不允许带两括号的。

    5 mysql需要为表指定存储类型。

    6 mssql识别符是[],[type]表示他区别于关键字(可选用来包含表名、字段名),但是mysql却是 `(重音符,也就是按键1左边的那个符号)。

    7 mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur_date(),当前完整时间是 now()函数。

    8 mssql不支持replace into 语句,但是在最新的sql20008里面,也支持merge语法。

    展开全文
  • SQL Server存储过程写法以及应用,是本人自己对SQL Server存储过程的一个总结应用,希望对你的学习有帮助。
  • sql server存储过程的优点 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对...

    sql server存储过程的优点

    1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
    2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
    3.存储过程可以重复使用,可减少数据库开发人员的工作量。
    4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

    一、定义变量
    –简单赋值
    declare @a int
    set @a=5
    print @a

    –使用select语句赋值
    declare @user1 nvarchar(50)
    select @user1=‘张三’
    print @user1
    declare @user2 nvarchar(50)
    select @user2 = Name from ST_User where ID=1
    print @user2

    –使用update语句赋值
    declare @user3 nvarchar(50)
    update ST_User set @user3 = Name where ID=1
    print @user3

    二、表、临时表、表变量

    –创建临时表1
    create table #DU_User1
    (
    [ID] [int] NOT NULL,
    [Oid] [int] NOT NULL,
    [Login] nvarchar NOT NULL,
    [Rtx] nvarchar NOT NULL,
    [Name] nvarchar NOT NULL,
    [Password] nvarchar NULL,
    [State] nvarchar NOT NULL
    );
    –向临时表1插入一条记录
    insert into #DU_User1 (ID,Oid,[Login],Rtx,Name,[Password],State) values (100,2,‘LS’,‘0000’,‘临时’,‘321’,‘特殊’);

    –从ST_User查询数据,填充至新生成的临时表
    select * into #DU_User2 from ST_User where ID<8

    –查询并联合两临时表
    select * from #DU_User2 where ID<3 union select * from #DU_User1

    –删除两临时表
    drop table #DU_User1
    drop table #DU_User2

    –创建临时表
    CREATE TABLE #t
    (
    [ID] [int] NOT NULL,
    [Oid] [int] NOT NULL,
    [Login] nvarchar NOT NULL,
    [Rtx] nvarchar NOT NULL,
    [Name] nvarchar NOT NULL,
    [Password] nvarchar NULL,
    [State] nvarchar NOT NULL,
    )

    –将查询结果集(多条数据)插入临时表
    insert into #t select * from ST_User
    –不能这样插入
    –select * into #t from dbo.ST_User

    –添加一列,为int型自增长子段
    alter table #t add [myid] int NOT NULL IDENTITY(1,1)
    –添加一列,默认填充全球唯一标识
    alter table #t add [myid1] uniqueidentifier NOT NULL default(newid())

    select * from #t
    drop table #t
    –给查询结果集增加自增长列

    –无主键时:
    select IDENTITY(int,1,1)as ID, Name,[Login],[Password] into #t from ST_User
    select * from #t

    –有主键时:
    select (select SUM(1) from ST_User where ID<= a.ID) as myID,* from ST_User a order by myID
    –定义表变量
    declare @t table
    (
    id int not null,
    msg nvarchar(50) null
    )
    insert into @t values(1,‘1’)
    insert into @t values(2,‘2’)
    select * from @t
    三、循环

    –while循环计算1到100的和
    declare @a int
    declare @sum int
    set @a=1
    set @sum=0
    while @a<=100
    begin
    set @sum+=@a
    set @a+=1
    end
    print @sum
    四、条件语句

    –if,else条件分支
    if(1+1=2)
    begin
    print ‘对’
    end
    else
    begin
    print ‘错’
    end

    –when then条件分支
    declare @today int
    declare @week nvarchar(3)
    set @today=3
    set @week=case
    when @today=1 then ‘星期一’
    when @today=2 then ‘星期二’
    when @today=3 then ‘星期三’
    when @today=4 then ‘星期四’
    when @today=5 then ‘星期五’
    when @today=6 then ‘星期六’
    when @today=7 then ‘星期日’
    else ‘值错误’
    end
    print @week

    五、游标

    declare @ID int
    declare @Oid int
    declare @Login varchar(50)

    –定义一个游标
    declare user_cur cursor for select ID,Oid,[Login] from ST_User
    –打开游标
    open user_cur
    while @@fetch_status=0
    begin
    –读取游标
    fetch next from user_cur into @ID,@Oid,@Login
    print @ID
    –print @Login
    end
    close user_cur
    –摧毁游标
    deallocate user_cur
    六、触发器

    触发器中的临时表:

    Inserted
      存放进行insert和update 操作后的数据
      Deleted
      存放进行delete 和update操作前的数据

    –创建触发器
    Create trigger User_OnUpdate
    On ST_User
    for Update
    As
    declare @msg nvarchar(50)
    –@msg记录修改情况
    select @msg = N’姓名从“’ + Deleted.Name + N’”修改为“’ + Inserted.Name + ‘”’ from Inserted,Deleted
    –插入日志表
    insert into LOGvalues(@msg)

    –删除触发器
    drop trigger User_OnUpdate
    七、存储过程

    –创建带output参数的存储过程
    CREATE PROCEDURE PR_Sum
    @a int,
    @b int,
    @sum int output
    AS
    BEGIN
    set @sum=@a+@b
    END

    –创建Return返回值存储过程
    CREATE PROCEDURE PR_Sum2
    @a int,
    @b int
    AS
    BEGIN
    Return @a+@b
    END

    –执行存储过程获取output型返回值
    declare @mysum int
    execute PR_Sum 1,2,@mysum output
    print @mysum

    –执行存储过程获取Return型返回值
    declare @mysum2 int
    execute @mysum2= PR_Sum2 1,2
    print @mysum2

    八、自定义函数

    函数的分类:

    1)标量值函数

    2)表值函数

    a:内联表值函数

    b:多语句表值函数

    3)系统函数

    –新建标量值函数
    create function FUNC_Sum1
    (
    @a int,
    @b int
    )
    returns int
    as
    begin
    return @a+@b
    end

    –新建内联表值函数
    create function FUNC_UserTab_1
    (
    @myId int
    )
    returns table
    as
    return (select * from ST_User where ID<@myId)

    –新建多语句表值函数
    create function FUNC_UserTab_2
    (
    @myId int
    )
    returns @t table
    (
    [ID] [int] NOT NULL,
    [Oid] [int] NOT NULL,
    [Login] nvarchar NOT NULL,
    [Rtx] nvarchar NOT NULL,
    [Name] nvarchar NOT NULL,
    [Password] nvarchar NULL,
    [State] nvarchar NOT NULL
    )
    as
    begin
    insert into @t select * from ST_User where ID<@myId
    return
    end

    –调用表值函数
    select * from dbo.FUNC_UserTab_1(15)
    –调用标量值函数
    declare @s int
    set @s=dbo.FUNC_Sum1(100,50)
    print @s

    –删除标量值函数
    drop function FUNC_Sum1
    谈谈自定义函数与存储过程的区别:

    一、自定义函数:

    1. 可以返回表变量

    2. 限制颇多,包括

    不能使用output参数;

    不能用临时表;

    函数内部的操作不能影响到外部环境;

    不能通过select返回结果集;

    不能update,delete,数据库表;

    3. 必须return 一个标量值或表变量

    自定义函数一般用在复用度高,功能简单单一,争对性强的地方。

    二、存储过程

    1. 不能返回表变量

    2. 限制少,可以执行对数据库表的操作,可以返回数据集

    3. 可以return一个标量值,也可以省略return

    存储过程一般用在实现复杂的功能,数据操纵方面。

    展开全文
  • 以一个最简单的查询语句的存储过程为例:mysql 版:********不带参数版********create PROCEDURE queryStaffProc() ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中BEGINselect * from...

    以一个最简单的查询语句的存储过程为例:

    mysql 版:

    ********不带参数版********

    create PROCEDURE queryStaffProc()  ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中

    BEGIN

    select * from tb_staff ;

    END

    call queryStaffProc;   ---注意此处,调用要用call

    **********带输入参数版*************

    create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20))---括号中可以传入多个参数

    BEGIN

    select * from tb_staff where StaffNo=p_StaffNo ;

    END

    call queryStaffProc (‘admin’);  ---传入参数

    **********带输出参数版*************

    create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20),out p_StaffName VARCHAR(20)) --注意输入参数是in,输出参数是out

    BEGIN

    select StaffName into p_StaffName from tb_staff where StaffNo=p_StaffNo ; ---将要输出的内容赋值给输出参数

    END

    call queryStaffProc ('admin',@staffName);  --传入两个参数

    select @staffName  ---获取值

    Sql server 版:

    *******不带参数版********

    create PROCEDURE queryStaffProc  --注意此处,不带(),如果需要定义参数,在下方定义

    AS

    展开全文
  • 操作这种办法实现的弱点,因为它每次在操作数据库的时候,都存在着频繁的和数据库的I/O直接交互,这点性能的牺牲实属不应该,那我们就看下面的方法,通过存储过程的游标方法来实现:建立存储过程: Create ...
  • 查询语句: select * from Base_Framework where Parent_ID = NULL 这样写是查不出东西的,具体的原因没深入了解,改成 select * from Base_Framework where Parent_ID IS NULL 就可以了。
  • sqlserver存储过程

    2011-09-14 16:44:47
    介绍sqlserver存储过程写法及语法注意事项
  • sqlServer存储过程

    2014-08-06 10:15:34
    详细描述SqlServer存储过程,从认识、创建到原理和写法
  • 以一个最简单的查询语句的存储过程为例:mysql 版:********不带参数版********create PROCEDURE queryStaffProc() ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中BEGINselect * from...
  • SQL SERVER存储过程

    2017-07-10 17:11:06
    SQL Server 存储过程的几种常见写法分析,我们该用那种写法 本文出处: http://www.cnblogs.com/wy123/p/5958047.html    最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的...
  • sql server存储过程优化

    2019-10-31 15:08:00
    博主写的很好! 不过有些地方我还不太理解为什么会使性能更好,慢慢研究。 SQL Server 存储过程的几种常见写法分析,我们该用那种写法
  • 公司做了一个需求,初期设想通过存储过程来初始化表数据,所以写了一个存储过程,如下: --CREATE PROCEDURE [dbo].[PROC_HANDLE_SHOPCAR_TXD_SR_TYPE] ALTER PROCEDURE [dbo].[PROC_HANDLE_SHOPCAR_TXD_SR_TYPE] ...
  • 以一个最简单的查询语句的存储过程为例: mysql 版: ********不带参数版******** create PROCEDURE queryStaffProc() ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中BEGIN ...
  • SQL Server 存储过程

    2014-02-28 14:54:00
    SQL Server存储过程写法以及使用跟Mysql的类似,但又有区别。 SQL Server 语法: 1、构造无参的存储过程,则不能添加括号(),如下所示: --删除是否已存在的存储过程 if(object_id('proc_table_data','p')is...
  • 1、创建存储过程,并开启事务控制 if exists (select * from dbo.sysobjects where name = N'PROD_NAME' ) DROP PROCEDURE dbo.PROD_NAME GO CREATE PROCEDURE [dbo].[PROD_NAME] ( @parameter1 VARCHAR(10), @...
  • 在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种写法孰优孰劣,该选用那种写法,以及各种写法优缺点,本文以一个简单的查询存储过程为例,简单说一下各种写法的区别,以及该用那种写法专业...
  • SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法 本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的...
  • SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法 原文:SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法 本文出处:...
  • ------创建数据库data_...存储过程的5种分页写法,下面的代码是从忘了什么时候从别人那Ctrl+C来的,所以仅仅作为收藏,希望作者看到不要喷我. 转载于:https://www.cnblogs.com/fengyingwang/p/7591131.html
  • SqlServer-IN写法(普通、存储过程

    万次阅读 2018-08-24 15:51:49
    注意:Guid比较特殊,所以在存储过程中使用IIN写法需要注意,传入的参数格式必须是 'aa57adce-0c4f-4c73-b3de-f941c7e702d5','cb4cc8bc-2f6d-4cd6-a6df-27146c9dd86e'   也就是说 string Guid=" 'aa57adce-0...
  • mapper: ,TwoMap,ThreeMap" > ...dao层和mapper会显示红色,先不用管,直接运行项目访问接口即可,这种有个缺陷,如果存储过程不确定有多少的结果集,这种的只能使用jdbc去调用,方便以后业务扩展    

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 243
精华内容 97
关键字:

sqlserver存储过程写法