精华内容
下载资源
问答
  • SqlServer利用存储过程创建表
    千次阅读
    2019-05-08 11:33:36

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    CREATE PROCEDURE [dbo].[new_pr_create_pressure_table]
        @table nvarchar(64)    
    AS
    BEGIN

    EXEC(
        'CREATE TABLE [dbo].' + @table + '([Num] [bigint] NOT NULL)  ON [PRIMARY]')

    END
     

    直接利用参数常见会失败,采用EXEC执行对应的字符串即可。

    更多相关内容
  • 将存储过程的名字,参数,操作语句写好后,点击语法分析,没有错误就直接“F5”运行就好了,存储过程创建完毕,以下是一个基本的存储过程的代码: CREATE PROCEDURE Get_Data ( @Dealer_ID VARCHAR(<strong>50) ...
  • 在2008之前如果我们想要将作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些数据作为字符串或者XML传入。 在2008中提供了值参数。使用值参数,可以不必创建临时或许多参数...
  • SqlServer存储过程、游标讲解SqlServer存储过程、游标讲解
  •  作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:  CREATE PROCEDURE GetContactFormalNames   AS  BEGIN  SELECT TOP 10 Title + "" "" + FirstName + "" "" + LastName ...
  • Sqlserver存储过程创建临时

    千次阅读 2021-06-21 09:10:35
    粘贴一篇自己用的比较少的内容–临时,第一次使用,小...create table #Tmp --创建临时#Tmp ( ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1 cid int, cname varchar (200), usern

    粘贴一篇自己用的比较少的内容–临时表,第一次使用,小编没什么想解释的,先做个记录

    Create Procedure [dbo].[Authority_Admin]
    as 
    begin
    --初始化浏览记录
    create table #Tmp --创建临时表#Tmp
    (
        ID   int IDENTITY (1,1)     not null, --创建列ID,并且每次新增一条记录就会加1
        cid          int,
    	cname        varchar (200),
    	username     NVARCHAR(MAX)
        primary key (ID)      --定义ID为临时表#Tmp的主键      
    );
    insert into #Tmp(cid,cname)
    select a.Content_topic_id, b.Content_topic_name + '-' +  a.Content_topic_name  from Ewk_Content_Topic a 
    inner join Ewk_Content_Topic b on a.Content_topic_uid = b.Content_topic_id
    where a.Content_topic_uid in (750,784,766,986,993,1028,786) order by a.Content_topic_uid asc
    
    Declare @cid int --栏目ID
    Declare @username NVARCHAR(MAX)
    Declare @Str NVARCHAR(MAX) --用来存放查询语句
    Declare @Count int --求出总记录数      
    Declare @i int
    Set @i = 0 
    Select @Count = Count(1) from #Tmp
    While @i < @Count 
        Begin	
    	   if @i > 0
    	   begin
    			  select @cid = cid from #Tmp where id = @i
    
    			   SELECT @username = STUFF((SELECT ','+ RealName+'('+Permission+')' FROM Authority a  
    			   inner join EwkCms_Admin as b on a.User_id=b.Id 
    			   WHERE a.Content_topic_id=@cid
    				for xml path('') ),1,1,'') 	  
    
    			  update #Tmp set username = @username where id = @i
    	   end
         
          
           Set @i = @i + 1
        End
    	select * from #Tmp
    drop table #Tmp
    
    
    end
    
    展开全文
  • SQLSERVER存储过程创建临时

    千次阅读 2019-09-30 23:03:55
    set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo -- =============================================-- Author:...-- Create date: 2012-01-16-- Description:查詢人員離歸崗報-- ======================...

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

     

     

     

    -- =============================================
    -- Author:Garry

    -- Create date: 2012-01-16
    -- Description: 查詢人員離歸崗報表
    -- =============================================


    -- EXEC [spPersonOnAndOffPost] '2012-1-15 10:00:00','2012-1-17 23:00:00'

    CREATE PROC [dbo].[spPersonOnAndOffPost]
    @StartDate datetime,  --工號
    @EndDate datetime  --班別
    AS

    -- *************** STEP 1 :建立以日期為欄位的 TABLE ***************
    DECLARE @colDATE nvarchar(20)
    DECLARE @sSQL nvarchar(1000)

    --算出時間差、當天次數 
    SELECT  A.*,B.sDATE,B.OFFCOUNT INTO #EMPDATE FROM ( 
     SELECT ID,[USER_ID],[USER_NAME],SHIFT,department_id,department_name,OFFDATE,ONDATE,[TYPE],
         DATEDIFF(minute,OFFDATE, ISNULL(ONDATE,CAST((CONVERT(VARCHAR (10), OFFDATE, 111)+' 23:59:59') AS DATETIME))) AS TIMETOTAL
     FROM dtblPersonPostManage )  A LEFT JOIN
     (  SELECT [USER_ID],SHIFT,department_id,department_name,CONVERT(VARCHAR (10), OFFDATE, 111) AS sDATE,COUNT(1) AS OFFCOUNT
          FROM dtblPersonPostManage
       GROUP BY [USER_ID],SHIFT,department_id,department_name ,CONVERT(VARCHAR (10), OFFDATE, 111)
      ) B
     ON A.[USER_ID] = B.[USER_ID] AND CONVERT(VARCHAR (10), A.OFFDATE, 111) = B.sDATE
     WHERE A.[type] ='ON' AND OFFDATE BETWEEN  @StartDate AND @EndDate
     ORDER BY [USER_ID],TIMETOTAL DESC

    -- SELECT * FROM dtblPersonPostManage

    -- SUM TIME BY 工號、日期
    SELECT [USER_ID],sDATE,SUM(TIMETOTAL) AS DAYTIMETOTAL INTO #TIMETOTALDATE FROM #EMPDATE GROUP BY [USER_ID],sDATE


     --找出離崗最長時間的資料
    SELECT * INTO #LongestData FROM (
     SELECT ROW_NUMBER() OVER (PARTITION BY [USER_ID],SDATE
        ORDER BY [USER_ID],SDATE,TIMETOTAL DESC) AS Rowid,
     ID,[USER_ID],[USER_NAME],SHIFT,department_id,department_name,OFFDATE AS OFFDATELONG,ONDATE AS ONDATELONG
     FROM    #EMPDATE
    ) EMPDATE WHERE Rowid =1

    SELECT EMP.[USER_ID],EMP.[USER_NAME],EMP.SHIFT,EMP.department_id,EMP.department_name,EMP.OFFDATELONG,EMP.ONDATELONG,EMP.OFFCOUNT,EMP.sDATE,
        EMP.TIMETOTAL,TOTALDATA.DAYTIMETOTAL FROM (
     SELECT A.[USER_ID],A.[USER_NAME],A.SHIFT,A.department_id,A.department_name,A.OFFDATELONG,A.ONDATELONG,B.OFFCOUNT,sDATE,B.TIMETOTAL
     FROM #LongestData A LEFT JOIN #EMPDATE B ON A.ID = B.ID ) EMP JOIN #TIMETOTALDATE TOTALDATA
    ON EMP.[USER_ID] = TOTALDATA.[USER_ID]  AND EMP.SDATE = TOTALDATA.SDATE

     

    DROP TABLE #EMPDATE
    DROP TABLE #LongestData
    DROP TABLE #TIMETOTALDATE

    Return

     

     

     

     

     


     

    转载于:https://www.cnblogs.com/CSharpStudy/archive/2012/04/20/2459852.html

    展开全文
  • sqlServer存储过程

    2014-08-06 10:15:34
    详细描述SqlServer存储过程,从认识、创建到原理和写法
  • 在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解释了,这里就直接说明实现方法了。...
  • 查询SQLSERVER数据库中各大小和空间的存储过程,用这个SQL创建一个存储过程。然后执行这个存储过程。即可查询各的相关信息。
  • SQL Server 创建存储过程

    千次阅读 2021-03-22 15:29:03
    1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) drop proc pro_name go create proc pro_name @param_name param_type [=default_value] as begin sql语句 ...

    1.创建存储过程的基本语法模板:

    if (exists (select * from sys.objects where name = 'pro_name'))
        drop proc pro_name
    go
    create proc pro_name
        @param_name param_type [=default_value]
    as
    begin    
        sql语句
    end
    

    ps:[]表示非必写内容。sys.objects存储的是本数据库中的信息,不仅仅存储表名,还有存储过程名 、视图名、触发器等等。

    例如:

     1 if (exists (select * from sys.objects where name = 'USP_GetAllUser'))
     2     drop proc USP_GetAllUser
     3 go
     4 create proc USP_GetAllUser
     5 @UserId int =1
     6 as 
     7 set nocount on;
     8 begin
     9     select * from UserInfo where Id=@UserId
    10 end
    

    ps:SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。

    2.调用方法:

    exec dbo.USP_GetAllUser 2;
    

    ps:一般在执行存储过程是,最好加上架构名称,例如 dbo.USP_GetAllUser 这样可以可以减少不必要的系统开销,提高性能。 因为如果在存储过程名称前面没有加上架构名称,SQL SERVER 首先会从当前数据库sys schema(系统架构)开始查找,如果没有找到,则会去其它schema查找,最后在dbo架构(系统管理员架构)里面查找。

    3.查看本数据库中存在的存储过程

    img

    依次展开数据库、可编程性、存储过程,即可看到已创建的存储过程。

    4.修改存储过程

    alter proc proc_name
    as
      sql语句
    

    5.存储过程中的输出参数的使用

     1 if (exists(select * from  sys.objects where name='GetUser'))
     2     drop proc GetUser
     3 go 
     4 create proc GetUser
     5     @id int output,
     6     @name varchar(20) out
     7 as 
     8 begin 
     9     select @id=Id,@name=Name from UserInfo where Id=@id
    10 end
    11 s
    12 go 
    13 declare 
    14 @name varchar(20),
    15 @id int;
    16 set @id=3;
    17 exec dbo.GetUser @id,@name out;
    18 select @id,@name;
    19 print Cast(@id as varchar(10))+'-'+@name;
    

    ps:参数output为该参数可以输出

    6.分页获取数据的存储过程

     1 if (exists(select * from  sys.objects where name='GetUserByPage'))
     2     drop proc GetUserByPage
     3 go 
     4 create proc GetUserByPage
     5     @pageIndex int,
     6     @pageSize int
     7 as 
     8 declare 
     9 @startIndex int,
    10 @endIndex int;
    11 set @startIndex =  (@pageIndex-1)*@pageSize+1;
    12 set @endIndex = @startIndex + @pageSize -1 ;
    13 begin 
    14     select Id,Name from 
    15     (
    16         select *,row_number()over (order by Id)as number from UserInfo  
    17     )t where t.number>=@startIndex and t.number<=@endIndex
    18 end
    19 
    20 go 
    21 exec dbo.GetUserByPage 2,4;
    

    7.存储过程中事务的创建

    if (exists(select * from  sys.objects where name='JayJayToTest'))
        drop proc JayJayToTest
    go 
    create proc JayJayToTest
        @GiveMoney int,
        @UserName nvarchar(20)
    as 
    beginset nocount on;
        begin tran;
        begin try
            update BankTest set Money = Money-@GiveMoney where Name=@UserName;
            update BankTest set Money = Money+@GiveMoney where Name='test';
            commit;
        end try    
        begin catch        
            rollback tran;
            print ('发生异常,事务进行回滚');
        end catch    
    end
    go
    exec JayJayToTest 10,'jayjay
    

    8.了解存储过程的执行计划

    SELECT * FROM sys.[syscacheobjects]查看当前缓存的执行计划
    

    如果执行存储过程时成功通过解析阶段,则 Microsoft SQL Server 查询优化器将分析存储过程中的 Transact-SQL 语句并创建一个执行计划。执行计划描述执行存储过程的最快方法,所依据的信息包括:

    1.表中的数据量。

    2.表的索引的存在及特征,以及数据在索引列中的分布。

    3.WHERE 子句条件所使用的比较运算符和比较值。

    4.是否存在联接以及 UNION、GROUP BY 和 ORDER BY 关键字。

    查询优化器在分析完存储过程中的这些因素后,将执行计划置于内存中。分析存储过程和创建执行计划的过程称为编译。优化的内存中的执行计划将用来执行该查询。执行计划将驻留在内存中,直到重新启动 SQL Server 或其他对象需要存储空间时为止。如果随后执行了存储过程,而现有执行计划仍留在内存中,则 SQL Server 将重用现有执行计划。如果执行计划不再位于内存中,则创建新的执行计划。

    重新编译执行计划(create proc JayJayToTest with recompile)

    创建存储过程时在其定义中指定 WITH RECOMPILE 选项,表明 SQL Server 将不对该存储过程计划进行高速缓存;该存储过程将在每次执行时都重新编译。当存储过程的参数值在各次执行间都有较大差异,导致每次均需创建不同的执行计划时,可使用 WITH RECOMPILE 选项。此选项并不常用,因为每次执行存储过程时都必须对其进行重新编译,这样会使存储过程的执行变慢。

    由于数据库的新状态,数据库内的某些更改可能会导致执行计划效率低下或不再有效。SQL Server 检测这些使执行计划无效的更改,并将计划标记为无效。此后,必须为执行查询的下一个连接重新编译新的计划。导致计划无效的情况包括:

    1.对查询所引用的表或视图进行任何结构更改(ALTER TABLE 和 ALTER VIEW)。
      2.通过语句(如 UPDATE STATISTICS)显式生成或者自动生成新的分发内容统计。
      3.除去执行计划所使用的索引。
      4.显式调用 sp_recompile。
      5.对键的大量更改(其他用户对由查询引用的表使用 INSERT 或 DELETE 语句所产生的修改)。
      6.对于带触发器的表,inserted 或 deleted 表内的行数显著增长。

    展开全文
  • sqlserver存储过程创建

    千次阅读 2019-01-09 16:24:49
     --执行sql的两种方式  select * from user_info where user_name=@name; -- 语句结束必须使用分号  EXEC('select * from patient');  begin  --获取密码长度  set @pwdNum= len(@pwd);  if(@pwdNum> 1...
  • 可以支持导出单的建表语句,也可以支持单库所有建表语句的导出以及同服务器跨库建表语句的导出。
  • SQL server 数据库创建与存储过程创建

    千次阅读 2019-05-14 14:07:35
    1.创建数据库与数据表 创建数据库 – 创建数据库 ...– 创建表 USE LGDB_CLZB6 GO – 1 创建表1 IF NOT EXISTS(SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘你的表名称1’) AND type IN ...
  • SQL Server 系统存储过程全局变量
  • SqlServer存储过程调用存储过程,如何接受返回值 关键代码: // eg:在@reArgs后面加OUTPUT接收GETPlace中的输出参数 EXEC GETPlace @str2, @reArgs OUTPUT 详细过程: Class 创建两个存储过程,通过调用,...
  • sqlserver存储过程

    千次阅读 2019-05-06 15:58:24
    一、存储过程 1.预先存储好的sql程序,保存在sqlserver中,通过名称和参数执行。 2.存储过程中可以包含:insert语句,update语句,delete语句,select语句,逻辑控制语句以及变量。 二、存储过程的优点: 1.执行速度...
  • sql server执行存储过程创建动态视图

    千次阅读 2020-01-03 16:47:15
    基本的视图创建方法 --查找要创建的视图是否存在-- if exists (select * from sysobjects where name = 'V_QM_RawMaterialMt') drop view V_QM_RawMaterialMt go --创建名称为V_QM_RawMaterialMt的视图-- ...
  • SqlServer存储过程详解

    千次阅读 2021-03-13 22:57:22
    存储过程:        存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句进行缓存,这样下次执 行的时候直接使用缓存中的语句,这样就可以...
  • SQLserver创建参数化存储过程

    千次阅读 2019-01-16 21:54:49
    SQLserver创建参数化存储过程 ql数据库的存储过程是一种在你关闭数据库时,储存你代码的一种方法,并且能实现以简短的指令来修改你的数据。, 那么就让我们看看这简短明了的参数化存储过程。 一.打开SQL数据库,找到...
  • sql server 创建存储过程

    万次阅读 多人点赞 2018-03-01 13:52:52
    右键单击“存储过程”,再单击“新建存储过程”将会创建存储过程模板:让我困惑的 &lt;Procedure_Name, sysname, ProcedureName&gt; 有什么用?搜遍全网 也没答案。。。。上图其实是一个存储过程...
  • SQLSERVER存储过程语法详解

    万次阅读 2018-09-01 11:36:13
    1 ...SQLServer 存储过程中不拼接SQL字符串实现多条件查询  以前拼接的写法  set @sql=' select * from table where 1=1 '  if (@addDate is not null)   set @sql = @sql+' ...
  • SQL Server存储过程,建议收藏!

    千次阅读 2020-05-20 19:27:09
    存储过程创建之后,用户通过指定存储过程名称与参数,调用该存储过程并且执行。在调用的过程中允许用户声明变量,设置条件,以便增强程序设计的能力。 二、存储过程的优点 存储过程加快系统运行速度,存储过程只在...
  • SQLServer创建存储过程

    千次阅读 2018-11-01 04:31:06
    SQL Server、 Azure SQL Database、Azure SQL 数据仓库和并行数据库中创建 Transact-SQL 或公共语言运行时 (CLR) 存储过程存储过程与其他编程语言中的过程类似。 可以在当前数据库中创建永久过程,或者在 ...
  • Sql Server存储过程详解

    千次阅读 2020-10-10 08:51:12
    Sql Server存储过程详解 1 存储过程概述 1.1 存储过程的概念 存储过程(Stored Procedure)是预编译SQL语句集合,这些语句存储在一个名称(存储过程的名称)下并作为单元来处理。存储过程代替了传统的逐条执行SQL...
  • 展开全部1、打开SQL server management studio,连接到数据库,展开想要创建的数据库,找到【可编程性】->【存储过程62616964757a686964616fe4b893e5b19e31333431356663】的菜单。2、在第一步找到的【存储过程】...
  • 结果存储过程不会,各种系统函数也不会用。客户那边还没网络。着实憋气了。 下面是查到的一些东西 一 、临时的使用 表名前使用一个#号,临时是局部的,使用两个#号,临时是全局的,在断开连接后sql会自动删除...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 225,847
精华内容 90,338
关键字:

sqlserver存储过程创建表