除了基本的数据库,数据表,数据记录操作之外,SQL-Server还为我们提供了比较丰富的其他对象元素。函数,过程,触发器,序列,映射服务器,

以及对各种元素的系统表信息读取与判断。

--先加一个利用递归查询树形节点的例子,待整理

CREATE TABLE smMenuTest
(
 Menuid INT,
 MenuCaption VARCHAR(255),
 MenuKind INT,
 SuperId INT  
)
SELECT * FROM smMenuTest ORDER BY MenuKind,SuperID,Menuid
INSERT smMenuTest VALUES (1,'销售管理',1,0)
INSERT smMenuTest VALUES (2,'计划管理',1,0)
INSERT smMenuTest VALUES (3,'报价管理',2,1)
INSERT smMenuTest VALUES (4,'订单管理',2,1)
INSERT smMenuTest VALUES (5,'主计划',2,2)
INSERT smMenuTest VALUES (6,'制定报价单',3,3)
INSERT smMenuTest VALUES (7,'报价单查询',3,3)
INSERT smMenuTest VALUES (8,'订单录入',3,4)
INSERT smMenuTest VALUES (9,'订单审核',3,4)
INSERT smMenuTest VALUES (10,'MRP计划',3,5)
GO
;
--DELETE smMenuTest
WITH Menu as
    (SELECT A.Menuid,A.MenuCaption,A.SuperId,iLevel=0  FROM smMenuTest A(NOLOCK)
        WHERE A.MenuCaption='订单审核'
  UNION ALL
     SELECT A.Menuid,A.MenuCaption,A.SuperId,iLevel=B.iLevel+1 FROM smMenuTest A(NOLOCK) JOIN Menu B on B.SuperId=A.Menuid )
SELECT A.MenuCaption+'-' FROM Menu A FOR XML PATH ('')

--用让变量参与动态语句运算, 并取值(待整理)

    1. CREATE TABLE #tmp(t INT NOT NULL,it DECIMAL(18,4),pt DECIMAL(18,4));
    2. INSERT INTO #tmp(t,it,pt) VALUES(1,10.00,15.00);
    3. INSERT INTO #tmp(t,it,pt) VALUES(2,20.00,30.00);
    4. DECLARE @sql NVARCHAR(2000) = N'SELECT @it=it,@pt=pt FROM #tmp WHERE t=@tN;';
    5. DECLARE @Param NVARCHAR(500) = N'@tN INT,@it DECIMAL(18,4) OUTPUT,@pt DECIMAL(18,4) OUTPUT';
    6. DECLARE @tN INT,@it DECIMAL(18,4),@pt DECIMAL(18,4);
    7. SET @tN = 1;
    8. --@tN=@tN,第一个@tN是@Param里的声明,而第二个@tN则是外部的声明,其他类似
    9. EXEC sp_executesql @sql,@Param,@tN=@tN,@it=@it OUTPUT,@pt=@pt OUTPUT;
    10. SELECT @it,@pt;
    11. DROP TABLE #tmp;

SQL-Server使用点滴(三)的更多相关文章

  1. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  2. SQL Server中的三种Join方式

      1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...

  3. (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...

  4. 浅谈SQL Server中的三种物理连接操作

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  5. SQL Server中的三种物理连接操作

    来源:https://msdn.microsoft.com/zh-cn/library/dn144699.aspx 简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Out ...

  6. 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  7. SQL server学习(三)T-SQL编程、逻辑控制语句和安全模式

    T-SQL编程 T-SQL编程与C语言类似,只是语法稍有不同而已,总体思想还是没有变化的.多的就不说了,还是从变量开始. 变量也分为全局变量和局部变量,表示方式稍有不同. 局部变量: 局部变量必须以标 ...

  8. SQL Server基础知识三十三问 (15-21)

    15. 存储过程可以调用自己么, 或者说可能有递归的存储过程么? SP nesting最多可以到多少层? 答: 可以的. 因为Transact-SQL 支持递归, 你可以编写可以调用自己的存储过程. ...

  9. 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  10. sql server 索引总结三

    一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...

随机推荐

  1. 本机,同机房,同城,异地,不同城,腾讯云ping延时值

    本机,同机房,同城,异地,不同城,腾讯云ping延时值 ping本机: 0.01ms ping同机房机器: 0.1ms ping同城机器: 1ms ping不同城机器: 20ms 北(南)方ping南 ...

  2. NuGet控制台有几个常用命令

    NuGet控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,如Instal ...

  3. jQuery 菜单

  4. Android: 实例解析Activity生命周期

    Activity生命周期图: 下面以一个实例来解析,实例APP运行,进入MainActivity, 点击Send Button以后进入MessgaeActivity 当第一次运行App,进入MainA ...

  5. python 图片爬虫

    #!/usr/bin/env python #coding:utf-8 import urllib import re def GetHtml(url): """获取HT ...

  6. Qt : QProcess

    QProcess 类用来启动另外的一个出现并与他们联系. 开始一个进程,通过传递你想要运行程序的名称和命令行参数作为参数给start()函数,来开始一个进程.参数作为独立的字符串来提供. QProce ...

  7. Python数据结构与算法设计总结篇

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static ...

  8. 搜索引擎LuceneNet

    http://www.cnblogs.com/edisonchou/p/5348625.html

  9. C语言----------链表的简单操作

    #include <stdio.h> #include <malloc.h> typedef struct node{ //定义节点类型 char data; //数据域 st ...

  10. 调试必备---console

    一.前言 可能很多前端er会习惯用 alert() 方法来进行调试,但我相信更多的人会使用 console.log(),因为它不用像 alert() 那样会有字符长度限制,也不会中止程序的进程,而且还 ...