zoukankan      html  css  js  c++  java
  • Sql Server Proc 先看看简单吧

    CREATE PRoc [名字]
    {
    @参数 数据类型,
    @参数 数据类型
    OUTPUT[输入]
    }
    AS
    begin
    select  INSERT UPDATE  (SQL)
    end
    
    --基本语句快

    --以上是语句库

    --先看看不带参数的吧 他跟方法一样 可以带参数也可以不带参数(当然我没用过几次不带参数的)

    --获取一个表吧这种都感觉像视图了

    IF(SELECT * FROM sysobjects WHERE Name ='proc_table')
    DROP PROC proc_table
    GO
    CREATE PROC proc_table
    AS
      SELECT * FROM Users WHERE S_ID=''
      GO
      EXEC proc_table

    --带参数的吧--就看看登录的SQL吧

    IF(SELECT * FROM sysobjects WHERE Name ='P_LOG')
    DROP PROC P_LOG
    GO
    CREATE PROC P_LOG
       @acctount VARCHAR(50),
       @accountpwd  VARCHAR(50)
    AS 
    BEGIN
    SELECT COUNT(*) FROM Users WHERE U_LoginName=@acctount AND U_Password=@accountpwd;
    END
    
    EXEC P_LOG'1','123456'
    --C#orjava 调了之后直接判断有没有值即可
    --这是返回单行单列。需要用返回单行单列的放方法去接收

    --再看看输出参数的存储过程

    在JAVA中我们需要调用带参的方法时需要传参给形参,列入比较两个大小的方法 int compare( int first ,int second),比较10 和20的大小,则调用形式:tempcompare(10,20),方法compare返回值赋值给变量为tmp.

    存储过程中也有与很像是,有两种类型的参数的参数

      ~输入参数:调用是像存储过程传实参,用来向PROC传值

      ~输出参数: 同JAVA 如果希望参数可以带出方法,则可以使用输出参数值带出方法,则可以输出参数,通过定义参数 "OUTPUT"标记 ,表明该参数是输出参数  ,执行存储过程后吧  返回值存放在输出中-

    可以给其他T-SQL 语句访问,

    CREATE proc [dbo].[P_GetConsumeOrderPaged]
        @PageSize int,
        @PageIndex int,
        @Count int output,
        @MC_CradID varchar(20),
        @MC_Mobile varchar(20),
        @BeginDate varchar(20),
        @EndDate varchar(20),
        @CO_OrderType int,
        @S_ID int
    as
    begin
        select top(@PageSize) * from ConsumeOrders M inner join MemCards A on M.MC_ID=A.MC_ID inner join CategoryItems B on M.CO_OrderType=B.CI_ID
        where A.S_ID=@S_ID and M.CO_ID not in(
                                select top(@PageSize*(@PageIndex-1)) M.CO_ID from ConsumeOrders M inner join MemCards A on M.MC_ID=A.MC_ID inner join CategoryItems B on M.CO_OrderType=B.CI_ID
                                and A.S_ID=@S_ID and B.C_Category='CO_OrderType' and ((A.MC_CardID=@MC_CradID or A.MC_Mobile=@MC_Mobile) or (@MC_CradID='' and @MC_Mobile='')) and ((@BeginDate='' or @EndDate='') or (M.CO_CreateTime between @BeginDate and @EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))
                            )
        and B.C_Category='CO_OrderType' and ((A.MC_CardID=@MC_CradID or A.MC_Mobile=@MC_Mobile) or (@MC_CradID='' and @MC_Mobile='')) and ((@BeginDate='' or @EndDate='') or (M.CO_CreateTime between @BeginDate and @EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))
        select @Count=COUNT(*) from ConsumeOrders M inner join MemCards A on M.MC_ID=A.MC_ID inner join CategoryItems B on M.CO_OrderType=B.CI_ID where A.S_ID=@S_ID and B.C_Category='CO_OrderType' and ((A.MC_CardID=@MC_CradID or A.MC_Mobile=@MC_Mobile) or (@MC_CradID='' and @MC_Mobile='')) and ((@BeginDate='' or @EndDate='') or (M.CO_CreateTime between @BeginDate and @EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))
    end
    GO

    -- 创建参数带有默认值的PROC

    在调PROC时,有些参数变化很少,这时,可以给这些参数一个默认值,即使调用时不输入值,也会在存储过程中使用默认值,在很大程度上方便调。

    IF(SELECT * FROM sysobjects WHERE Name ='proc_insertstu')
    DROP PROC proc_insertstu
    GO
    create pro proc_insertstu
    @stuname varchar(20),
    @stusex char(2)=''@classid int =2
    AS
    begin 
    INSERT  INTO stuinfoO(StuName,stusexmclassid)
    values(@stuname ,@stusex,@classid )
    end
    go
    
    
    exec proc_insertstu'唐胜'
    exec proc_insertstu'‘‘ZHUBAJIE’@CLASSID=1

    `调用时可以传值也可以不传

  • 相关阅读:
    Vue常见问题总结
    vue学习记录
    内卷
    at least once 和 at most once 问题
    IO学习笔记(全)
    IO学习笔记7
    IO学习笔记6
    IO学习笔记5
    IO学习笔记4
    IO学习笔记3
  • 原文地址:https://www.cnblogs.com/yijieyufu/p/12345403.html
Copyright © 2011-2022 走看看