【SQL开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了SQL开源代码-CH16.sql的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
-- P16-5
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
-- P16-6a
EXEC master..xp_cmdshell 'DIR C:\TEMP'
-- P16-6b
USE master
EXEC xp_cmdshell 'DIR C:\TEMP'
-- P16-9a
CREATE PROCEDURE MyProc1
AS SELECT * FROM 标标公司 WHERE 价格 > 400
GO
EXEC MyProc1
-- P16-9b
CREATE PROCEDURE MyProc2
@param1 char(10), @param2 money
WITH ENCRYPTION
AS INSERT 标标公司 (产品名称, 价格)
VALUES (@param1, @param2)
GO
EXEC MyProc2 '组合语言', 520
GO
SELECT *
FROM 标标公司
-- P16-10
/* MyProc3 预存程序 */
CREATE PROCEDURE MyProc3
@param1 char(10), @param2 money, @param3 money OUTPUT
AS INSERT 标标公司 (产品名称, 价格)
VALUES (@param1, @param2)
SELECT @param3 = SUM(价格)
FROM 标标公司
GO
/* MyProc4 预存程序 */
CREATE PROCEDURE MyProc4
@param1 money
AS PRINT '目前的总价为: ' + CONVERT(varchar, @param1)
GO
DECLARE @sum money
EXEC MyProc3 'MATLAB 手册',320,@sum OUTPUT
EXEC MyProc4 @sum
-- P16-11a
CREATE PROCEDURE 取得客户地址
@客户编号 int,
@地址 varchar(100) OUTPUT
AS SELECT @地址 = 地址
FROM 客户
WHERE 客户编号 = @客户编号
IF @@rowcount > 0
RETURN 0 /* 如果
查询到则传回 0 */
ELSE
RETURN 1 /* 没有查到就传回 1 */
GO
DECLARE @ret int, @地址 varchar(100)
EXEC @ret = 取得客户地址 4, @地址 OUTPUT /* 用 @ret 接收传回值 */
IF @ret = 0
PRINT @地址
ELSE
PRINT '找不到!'
-- P16-11b
/* 建立 MyProc5 预存程序群组的第 1 个
程序 */
CREATE PROCEDURE MyProc5;1
AS SELECT *
FROM 旗旗公司
GO
/* 建立 MyProc5 预存程序群组的第 2 个程序 */
CREATE PROCEDURE MyProc5;2
AS
SELECT *
FROM 标标公司
GO
MyProc5;1
EXEC MyProc5;2
-- P16-14
CREATE PROCEDURE MyProc6
AS SELECT 产品名称, 价格
FROM 标标公司
WHERE 产品名称 LIKE '%SQL%'
-- P16-16
ALTER PROCEDURE MyProc2
AS SELECT *
FROM 标标公司
-- P16-21
CREATE PROCEDURE test
@a int,
@b int = NULL,
@c int = 3
AS
SELECT @a, @b, @c
GO
EXEC test /* 错误, 第一个参数不可省 */
GO
EXEC test 1 /* OK, 第 2、3 参数用预设值 */
GO
EXEC test 1, DEFAULT /* OK, 可用 DEFAULT 表示使用预设值 */
GO
EXEC test 1, DEFAULT, 5 /* OK */
GO
EXEC test 1, 2, 5 /* OK */
GO
-- P16-22a
EXEC test @c = 5, @b = DEFAULT, @a = 1
-- P16-22b
EXEC test 1, @c = 2
GO
EXEC test @c = 2, 1
GO
EXEC test @c = 5
-- P16-23
CREATE PROCEDURE TestRetVal
@TableName varchar(30) OUTPUT
AS
DECLARE @sqlstr varchar(100)
SET @
sqlstr = 'SELECT * FROM ' + @TableName
EXEC (@sqlstr) /* 执行字串中的 SQL 叙述 */
IF @@ERROR = 0
BEGIN
SET @TableName = 'Hello'
RETURN 0
END
ELSE
RETURN 1
GO
DECLARE @ret int, @name varchar(30)
SET @name = '旗旗公司'
EXEC @ret = TestRetVal @name OUTPUT
PRINT @name + ', RETURN = ' + CAST(@ret AS CHAR)
-- P16-25
SELECT *
FROM 客户
WHERE 联络人 = NULL
-- P16-27a
CREATE PROCEDURE #tempproc
AS PRINT 'Test'
GO
EXEC #tempproc
-- P16-27b
CREATE PROCEDURE proc3
AS PRINT 'Proc3: at level ' + CAST(@@NESTLEVEL AS CHAR)
GO
CREATE PROCEDURE proc2
AS PRINT 'Proc2 start: at level ' + CAST(@@NESTLEVEL AS CHAR)
EXEC proc3
PRINT 'Proc2 end: at level ' + CAST(@@NESTLEVEL AS CHAR)
GO
CREATE PROCEDURE proc1
AS PRINT 'Proc1 start: at level ' + CAST(@@NESTLEVEL AS CHAR)
EXEC proc2
PRINT 'Proc1 end: at level ' + CAST(@@NESTLEVEL AS CHAR)
GO
EXEC proc1
-- P16-29
CREATE PROC TestRPC
AS
SELECT * FROM 旗旗公司
-- P16-30
EXEC FLAG2.练习02.dbo.TestRPC