SQL 参考

摘要:
1.CURSORDECLARERole_游标CURSORFORSELECTRoleNameFROMSYS_ RRoleWHEREINID(SELECTRoleIDFROMSYS_RAccountRoleWHEREAccountID=@AccountID)OPENRole_CursorFETCHNEXTFROMRole_CursorINTO@RoleNameWHILE@@FETCH_STATU

1. CURSOR
DECLARE Role_Cursor CURSOR
    FOR
SELECT  RoleName  FROM SYS_RRole   WHERE ID IN   (SELECT RoleID  FROM SYS_RAccountRole  WHERE AccountID = @AccountID)

 OPEN Role_Cursor
 FETCH NEXT FROM Role_Cursor INTO @RoleName

 WHILE @@FETCH_STATUS = 0
 BEGIN
  select @RoleNames = @RoleNames + @RoleName+','
  FETCH NEXT FROM Role_Cursor INTO @RoleName
 END

 CLOSE Role_Cursor
 DEALLOCATE Role_Cursor
-------------------------------------------------------------------------------------------
2.1 FUNCTION
CREATE   FUNCTION [GetAreaPY] (@soke varchar(200)) 
RETURNS nvarchar(50) AS 
BEGIN
 declare @ReturnStr  nvarchar(50)
 set @ReturnStr = ''
 
 IF (@soke='苏州市司法局' or @soke='苏州市')
 begin
  set @ReturnStr = 'sfj'
 end
 else
 begin
  IF CHARINDEX('高新区', @soke) > 0
   set @ReturnStr = 'gx'
  IF CHARINDEX('园区', @soke) > 0
   set @ReturnStr = 'yq'
  IF CHARINDEX('沧浪', @soke) > 0
   set @ReturnStr = 'cl'
  IF CHARINDEX('平江', @soke) > 0
   set @ReturnStr = 'pj'
  IF CHARINDEX('金阊', @soke) > 0
   set @ReturnStr = 'jc'
  IF CHARINDEX('吴中', @soke) > 0
   set @ReturnStr = 'wz'
  IF CHARINDEX('相城', @soke) > 0
   set @ReturnStr = 'xc'
  IF CHARINDEX('吴江', @soke) > 0
   set @ReturnStr = 'wj'
  IF CHARINDEX('昆山', @soke) > 0
   set @ReturnStr = 'ks'
  IF CHARINDEX('常熟', @soke) > 0
   set @ReturnStr = 'cs'
  IF CHARINDEX('太仓', @soke) > 0
   set @ReturnStr = 'tc'
  IF CHARINDEX('张家港', @soke) > 0
   set @ReturnStr = 'zjg'
 end 
 return LOWER(@ReturnStr)
END
-------------------------------------------------------------------------------------------
2.2 FUNCTION ('Atp Bmp Code' --> 'abc')
CREATE   FUNCTION [GetStrByLongStr] (@str varchar(200)) 
RETURNS nvarchar(50) AS 
BEGIN
 set @str = REPLACE(@str,'    ',' ')
 set @str = REPLACE(@str,'   ',' ') 
 set @str = REPLACE(@str,'  ',' ')

 declare @ReturnStr  nvarchar(50)
 set @ReturnStr = ''
 
 set @ReturnStr = substring(@str,1,1)
 WHILE CHARINDEX(' ', @str) > 0
 BEGIN
     set @str = substring(@str,CHARINDEX(' ', @str)+1,len(@str))
   set @ReturnStr = @ReturnStr + substring(@str,1,1)
   
 END
 return LOWER(@ReturnStr)
END
-------------------------------------------------------------------------------------------
3.1 Procedure
CREATE procedure p_GetChildOrg
@OrgID bigint
as

select * from SYS_Organization where ParentOrgID in(select OrgID from SYS_Organization where ParentOrgID in(select OrgID from SYS_Organization where ParentOrgID=@OrgID))
union
select * from SYS_Organization where ParentOrgID in(select OrgID from SYS_Organization where ParentOrgID=@OrgID)
union
select * from SYS_Organization where ParentOrgID=@OrgID
union
select * from SYS_Organization where OrgID=@OrgID
GO

-------------------------------------------------------------------------------------------
3.2 Procedure
create procedure SP_OrdList_ByDate
@BYear int,
@EYear int
AS
select * from dbo.Odr_List
where Year(OdrDate)>=@BYear and Year(OdrDate)<=@EYear
GO
--exec SP_OrdList_ByDate 2001,2004
-------------------------------------------------------------------------------------------
4.1 Trigger
create trigger track_Odr_Detail_inserts
on dbo.Odr_Detail
for insert
as
declare @price int
declare @odrid int
select @price=Price from Inserted
select @odrid=OdrID from Inserted
update dbo.Odr_List set TotalMoney=TotalMoney+@price where OdrID=@odrid
go
--insert into dbo.Odr_Detail values(81,'POP_8',13)
-------------------------------------------------------------------------------------------
4.2 Trigger
create trigger track_Odr_Detail_updates
on dbo.Odr_Detail
for update
as
declare @new_price int --新价格
declare @old_price int  --旧价格
declare @odrid int
declare @range int     --变化值
select @new_price=Price from Inserted
select @old_price=Price from Deleted
select @odrid=OdrID from Inserted
set @range=@new_price-@old_price
update dbo.Odr_List set TotalMoney=TotalMoney+@range where OdrID=@odrid
go

--update Odr_Detail set Price=20 where OdrID=81
-------------------------------------------------------------------------------------------
6. 自身连接 (ID,姓名,级别,主管姓名)
select a.ID,a.Name,a.Level,b.Name BossName
from Member a left join Member b on a.BOSSID=b.ID
-------------------------------------------------------------------------------------------

7. identity(bigint,1,1)
select identity(bigint,1,1) as EmpID,...
into temptable
from tableName1

insert into tableName2
select * from tableName1

drop table temptable

-------------------------------------------------------------------------------------------
8.1 Function (Return table)
CREATE TABLE Arrays
(
  aid INT NOT NULL IDENTITY PRIMARY KEY,
  array VARCHAR(7999) NOT NULL
)
go
INSERT INTO Arrays VALUES('')
INSERT INTO Arrays VALUES('10')
INSERT INTO Arrays VALUES('20,40,30')
INSERT INTO Arrays VALUES('-1,-3,-5')
GO
CREATE FUNCTION  function1(@arr AS VARCHAR(7999))
  RETURNS @t TABLE(pos INT NOT NULL, value INT NOT NULL)
AS
BEGIN
  DECLARE @end AS INT, @start AS INT, @pos AS INT
  SELECT @arr = @arr + ',', @pos = 1,
    @start = 1, @end = CHARINDEX(',', @arr, @start)
  WHILE @end > 1
  BEGIN
    INSERT INTO @t VALUES(@pos, SUBSTRING(@arr, @start, @end - @start))

    SELECT @pos = @pos + 1,
      @start = @end + 1, @end = CHARINDEX(',', @arr, @start)
  END
  RETURN
END
--test
select * from function1('200,400,300')
go
-------------------------------------------------------------------------------------------
8.2 Function (Return table)
CREATE            function   gettreenode(@eid bigint)  
  returns   @re   table(autoid bigint IDENTITY(1,1),eid  bigint,level int)  
  as  
    begin
 
 declare @l int
 set @l=0
 insert @re select @eid,@l
 while @@rowcount>0
 --全局变量@@rowcount,记录上次操作影响的行数
 begin
 set @l=@l+1
 insert @re select a.OrgID,@l from SYS_Organization as a,@re as b where a.ParentOrgID=b.eid and b.level=@l-1
 
 --循环将当前记录的直接下级插入@re
 end
 

 return
 

    end

-------------------------------------------------------------------------------------------
9.
--全局变量@@rowcount,记录上次操作影响的行数

免责声明:文章转载自《SQL 参考》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据库SQL优化大总结之 百万级数据库优化方案(转)Android Studio项目导入aar包报错下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Java中将对象转换为Map的方法

将对象转换为贴图的方法。代码如下:/***将对象转换为TreeMap。属性名称为key,属性值为value*@paramobject Object*@return*@throwsIllegalAccessException*/privatestaticTreeMap<String,Object>objToMap(Objectobject)throwsille...

MATLAB绘图

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。如˃˃A=pascalA=111111234513610151410203515153570˃˃plot3...

GitHub怎样fork别人的代码到自己仓库并进行贡献

在fork完成其他人的代码后,它也在自己的帐户下拥有该项目,然后将其克隆到自己的计算机上。然后它可以通过gitclone命令修改项目。但是,不建议直接在主分支上修改项目。最好在主分支的基础上剪切一个dev分支,然后在dev分支上修改它。修改后,将dev分支合并到master分支。...

国产操作系统——银河麒麟V10 SP1使用小结

几天前,我看了国内操作系统Galaxy Kirin有了新更新的新闻,于是我开始了一个新系统=============================================个人评价:这个系统是一个国产操作系统。尽管使用了大量的Ubuntu和Windows设计,使用了Linux内核,但这是国产操作系统从无到有的开始,其意义和价值远远大于其使用价值。总之...

RPi 树莓派 DSI 接口研究 MIPI raspberry pi

我已经玩树莓派很久了。我发现尚未使用DSI显示界面。经过一些研究,我发现它很有趣。我稍后会记录相关信息。(更新1:目前,整个网络上有很多方案来研究hdmi和mipi之间的相互转换方案:a.)mipi屏幕+hdmi界面:大多数都是因为有很多mipi屏幕和漂亮的参数而被研究的。详细信息:谷歌,得益于包括智汇在内的各种大神的研发,如Pocket LCD方案。最困难...

CSS躬行记(8)——裁剪和遮罩

裁剪最早是在CSS2.1时代由clip属性引入,但该属性只能应用于绝对定位的元素,并且只能裁剪成矩形。CSS3提供了强大的clip-path属性,突破了clip属性的众多限制,接下来将围绕clip-path属性展开讲解。3)裁剪路径对于复杂的形状,可以采用SVG来创建裁剪路径,实现自定义。2)替换元素的填充和定位CSS3引入了两个新属性,用于遮罩替换元素。...