SQLServer常用代码段

------------------------------------------------------------------------
GO
--查询库中表的行数 打印大于0行的表名和行数
DECLARE @TableName VARCHAR(128)
Declare PostCur Cursor For  
SELECT name FROM sys.tables  
Open PostCur  
Fetch next From PostCur Into @TableName  
While @@fetch_status=0  
    Begin  
    DECLARE @ct INT
    SET @ct=0
    DECLARE @strSQL NVARCHAR(500)
    SET @strSQL='Select @ct=Count(1) From '+@TableName
    exec sp_executesql @strSQL,N'@ct int output',@ct OUTPUT
    IF(@ct>0)
    BEGIN
        print '表名 '+@TableName
        PRINT '数据条数 '+Convert(varchar(32),@ct)
    END
    Fetch next From PostCur Into @TableName    
    End 
Close PostCur  
Deallocate PostCur
 
----------------------------------------
--查询数据库总各表数据量
GO
CREATE TABLE #tbles(ID int IDENTITY(1,1),TableName varchar(128)
    ,IsHandle bit DEFAULT('False')
    ,TableRowCount int DEFAULT(0))
INSERT INTO #tbles(TableName)
SELECT name FROM sys.tables
DECLARE @TableName varchar(128)
DECLARE @ID int
SET @ID=0
SELECT TOP 1 @ID=ID,@TableName=TableName FROM #tbles WHERE IsHandle='False'
WHILE(@ID!=0)
BEGIN
    DECLARE @isexists bit
    DECLARE @RowCount int
    DECLARE @SqlStr nvarchar(1000)
    SET @SqlStr='SELECT @RowCount=Count(1) FROM '+@TableName
    exec sp_executesql @SqlStr
    ,N'@RowCount int output',@RowCount OUTPUT
    UPDATE #tbles SET IsHandle='True',TableRowCount=@RowCount WHERE TableName=@TableName
    Print @RowCount
    PRINT @TableName    
    SET @ID=0
    SET @RowCount=0
    SET @SqlStr=''
    SELECT TOP 1 @ID=ID,@TableName=TableName FROM #tbles WHERE IsHandle='False'
END
SELECT * FROM #tbles
Drop Table #tbles
 
 
------------------------------------------------------------------------
---查询存储过程返回结果
GO
create proc getdata2
as
select 1 as r1,2 as r2
 
GO
create table #temp(r1 int,r2 int)
insert into #temp exec getdata2
select * From #temp
drop table #temp
 
 
------------------------------------------------------------------------
----查询生成拼接字符串
Go
create table #temp1(c1 int)
insert into #temp1(c1)Values(1)
insert into #temp1(c1)Values(2)
insert into #temp1(c1)Values(3)
insert into #temp1(c1)Values(4)
GO
Select c1 From #temp1 for xml path('')
Select c1 as [data()] From #temp1 for xml path('')
Select Convert(varchar(10),c1) +',' From #temp1 for xml path('')
declare @str varchar(max)
select @str=(Select Convert(varchar(10),c1) +',' From #temp1 for xml path(''))
select @str
 
 
------------------------------------------------------------------------
--获取随机字符串
GO
CREATE VIEW [dbo].[V_RAND]
AS
SELECT RAND1 = CONVERT(INT,RAND()*26),RAND2   =   RAND()*2
 
GO
Create   FUNCTION   [dbo].[f_GetRandStr](@LEN   INT,@FLAG   INT) 
RETURNS   NVARCHAR(100) 
AS
--@LEN   输出字符的长度 
--@FLAG   返回值包含字符   1:大写字母      2:小写字母      3:大小写字母混合 
BEGIN
       DECLARE   @SQL   NVARCHAR(100),@RAND   INT
       SELECT   @SQL   =    ''
       IF   @LEN>100 
             SET @LEN   =   100 
   
       WHILE   @LEN>0    
       BEGIN
             SELECT @RAND   =   RAND1 +(CASE   @FLAG   WHEN   1   THEN   65   WHEN   2   THEN   97 
                   ELSE(CASE WHEN RAND2 > 1 THEN   97   ELSE   65   END)   END) 
             FROM   V_RAND 
   
             SELECT   @SQL=@SQL + CHAR(@RAND),@LEN  = @LEN - 1 
       END
   
       RETURN   @SQL 
END
GO
Select dbo.f_GetRandStr(30,3)
 
----------------------------------------
--简单的传参输出
GO
declare @i3 int
exec sp_executesql N'Select @i3=@i1+@i2',N'@i1 int,@i2 int,@i3 int output',1,22,@i3 output
Select @i3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值