SQL存储过程测试(5)——从T
问题
如何让T-SQL测试套件把测试用例结果直接写入文本文件
设计
使用ActiveX技术实例化一个FileSystemObject对象,然后通过OpenTextFile()和WriteLine()方法直接把测试结果写入文件。
方案
declare @fsoHandle int,@fileID int
exec sp_OACreate 'Scripting.FileSystemObject',@fsoHandle out
exec sp_OAMethod @fsohandle,'OpenTextFile',@fileID out,
'C:\pathToResults\Results.txt',8,1
——主测试循环
if(@result = @expected)
exec sp_OAMethod @fileID,'WriteLine',null,'Pass'
else
exec sp_OAMethod @fileID,'WriteLine',null,'FAIL'
——主测试循环结束
exec sp_OADestroy @fileID
exec sp_OADestroy @fsoHandle
我们需要有一个文件句柄和一个文件ID,它们的类型都是Int,SQL Server有一个作sp_OACreate()的存储过程可以实例化ActiveX对象。sp_OACreate()接受一个字符串作为传入的参数,这个字符串就是要创建的ActiveX对象的名字,并且以out参数的形式返回一个已创建对象的引用,这个引用的类型是int。对于Scripting.FileSystemObject的情况来说,返回值是关于文件句柄的一个引用。接下来,可以通过调用sp_OAMethod()方法打开文件。在本例中,第一个参数是sp_OACreate()把创建的句柄,第二个参数是我们想要使用的方法的名称,第三个参数是用于保存返回的文件句柄的变量,第四个参数指定文件的物理名称,第五个参数是可选的,它指定使用的IO模式。
1:以只读方式打开文件(默认)。
2:以写方式打开文件。
3:以追加方式打开文件
第六个参数是可选的,它是一个创建标识,用来指定当给定文件不存在的时候是否创建一个新的文件。
0:不创建新文件(默认)。
1:创建一个新文件。
第八个害数也是可选的,它是一个格式标识,用来指定字符的编码方式。
0:以ASCII方式打开文件(默认)。
1:以Unicode方式打开文件。
 
相关文档:
1. 存储过程(定义&编写)
l 创建存储过程
CREATE PROCEDURE storedproc1
AS
SELECT *
from tb_project
WHERE 预计工期<= 90
ORDER BY 预计工期 DESC
GO
exec storedproc1
GO
l 修改存储过程
ALTER PROCEDURE storedproc1
AS
SEL ......
1.创建数据库
--exec xp_cmdshell 'mkdir d:\project'--调用DOS命令创建文件夹,使用此句需要启动SQL的外围工具
if exists(select * from sysdatabases where name='数据库名')
drop database 数据库名
set nocount on ......
--SQL高级程序设计:子查询
use AdventureWorks
GO
SELECT DISTINCT EmployeeID from HumanResources.JobCandidate WHERE EmployeeID IS NOT NULL;
SELECT e.EmployeeID,FirstName,LastName
from HumanResources.Employee e
INNER JOIN Person.Contact c
ON e.ContactID = c.ContactID
WHERE e.EmployeeID IN ......
phpmyadmin 修改执行sql文件大小限制
打开php.ini
post_max_size = 100M ; 表单提交文件大小上限
memory_limit = 128M ; 内存上限
upload_max_filesize = 100M ; 上传文件大小上限
修改以上三项,就可以解决。 但是此时PHPMYADMIN中最大限制:22,528 KB, ......