想做一个这样的小程序,程序已经与数据库连接好(数据库是SQL SERVER,程序与数据库的连接也已经好了)现在想做一个这样的功能:
程序里有一个文本框,在这个文本框里输入对应脚本的文件名(如TEST.SQL)
点运行按钮,能直接运行此脚本(此脚本在SQL分析器已经测试成功)另外最好能够再添加一个memo之类的,把脚本运行过程显示出来,如我脚本中有print 'step 1.....'
请问如何实现,谢谢
程序里有一个文本框,在这个文本框里输入对应脚本的文件名(如TEST.SQL)
点运行按钮,能直接运行此脚本(此脚本在SQL分析器已经测试成功)另外最好能够再添加一个memo之类的,把脚本运行过程显示出来,如我脚本中有print 'step 1.....'
请问如何实现,谢谢
adoquery1.sql.loadfromfile(...);
adoquery1.open;
但是,print好像是无法取得的
能取得的只是sql返回的记录集
adoquery1.close;
adoquery1.sql.loadfromfile(...);
adoquery1.open;
2、三层ADO
DataModule1.ClientDataSet1.Active:=False;
DataModule1.ClientDataSet1.LoadFromFile(...);
DataModule1.ClientDataSet1.Active:=True;
print 'step 1.....'
这种功能我以前写过,最好还是用SQL的批处理进行。在MSSQL2005下可能用SQLCMD来。2000下用什么我就不知道了。
通过 EXEC 调用 sqlplus,可以在sqlplus后添加参数,
指定输入参数(要执行的脚本文件)和输出参数(脚本文件执行的结果)。
把文本框的内容作为 sqlplus 的输入参数,
再把执行 sqlplus 的输出结果文件显示到 memo 上就可以了。sql server 不熟悉,应该有类似功能。
比如我如下的脚本就不能运行
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[V对帐状态]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[V对帐状态]
GOSET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW dbo.V对帐状态
AS
SELECT TOP 10 *
FROM (SELECT '普通会员对帐' 名称, 1 序号, CONVERT(bit, 1) 默认
union
SELECT '白金会员对帐' 名称, 2 序号, CONVERT(bit, 0) 默认
union
SELECT '尊贵会员对帐' 名称, 3 序号, CONVERT(bit, 0) 默认
) a
ORDER BY 序号GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO