首页 > 数据库技术 > 详细

T-SQL基础--chp10可编程对象学习笔记[下]

时间:2014-09-29 15:13:12      阅读:451      评论:0      收藏:0      [点我收藏+]
--2014年9月29日9:15:29
--P338
--两种执行动态SQL的方法
--EXEC命令
DECLARE @sql AS VARCHAR(100);
SET @sql = PRINT ‘‘This message was printed by a dynamic SQL batch‘‘;;--注意,对于字符串中的字符串,需要用两个单引号(不是双引号!)来代表一个单引号
EXEC(@sql);
--sp_executesql存储过程[两个输入参数和一个参数赋值部分]
DECLARE @sql AS NVARCHAR(100);

SET @sql = NSELECT orderid,custid,empid,orderdate 
FROM Sales.Orders
WHERE orderid = @orderid;

EXEC sp_executesql
  @stmt = @sql, --该参数中需要包含想要运行的批处理代码的Unicode字符串
  @params = N@orderid AS INT, --该参数是一个unicode,该参数包含@stmt中所有输入和输出参数的声明
  @orderid = 10248;--为输入和输出参数指定
  
--在PIVOT中使用动态SQL P343 暂略

--例程是为了计算结果或执行任务而对代码进行封装的一种编程对象

--例程1:用户自定义函数 标量UDF(返回单个数据值)+表值UDF(返回一个表)
--表值UDF只能在查询的FROM子句中出现
USE TSQLFundamentals2008;
IF OBJECT_ID(dbo.fn_age) IS NOT NULL 
  DROP FUNCTION dbo.fn_age;
GO

CREATE FUNCTION dbo.fn_age
(
  @birthdate AS DATETIME,
  @eventdate AS DATETIME
)
RETURNS INT
AS
BEGIN
  RETURN 
  DATEDIFF(year,@birthdate,@eventdate)
   - CASE WHEN 100 * MONTH(@eventdate) + DAY(@eventdate)
           < 100 * MONTH(@birthdate) + DAY(@birthdate)
        THEN 1 ELSE 0
    END
END
GO

SELECT 
  empid, firstname, lastname, birthdate,
  dbo.fn_age(birthdate,CURRENT_TIMESTAMP) AS age
FROM HR.Employees;

--存储过程(略)

--触发器[一种特殊的存储过程,不能被显式执行,必须依赖于一个事件的过程]

--错误处理
--TRY CATCH

第10章 完

 

T-SQL基础--chp10可编程对象学习笔记[下]

原文:http://www.cnblogs.com/lanjin/p/4000062.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!