存储过程:
CREATE PROCEDURE hot_input_test33
@str_t char(11),
@str_f char(150)
as
set nocount on
declare @str1 as char(11)
select @str1='GMM'+cast(rand()*1000000 as char(8)) --临时使用的表,gmm后面的数字随机生成 -----表不存在,则新建一张表
if not exists (select * from sysobjects where id = object_id(''+@str_t+'') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
exec('create table ['+@str_t+']([hi_device] int,[hi_time] datetime,[hi_mmmi] char(15),[hi_iiii] char(15))' )
end
----
exec('create table ' +@str1+'([hi_device] int,[col002] varchar(255),[col003] varchar(255),[hi_time] datetime,
[hi_mmmi] char(15),[hi_iiii] char(15),[col7] varchar(255))') ---建临时使用的表
exec ('master..xp_cmdshell '+''''+' bcp test..'+@str1+' in "'+@str_f+'" -c -t"," -SHZGA-LWM -Usa -P55555'+'''')
--将数据导入临时表
exec('insert into ['+@str_t+'] select [hi_device],[hi_time],[hi_mmmi],[hi_iiii] from ['+@str1+']') --从临时表取数据存入数据库中的表中(表有则追加)
exec('drop table ['+@str1+']') --删除临时使用的表 set nocount off
GO
--exec hot_input_test 'gsm20090101','C:\Documents and Settings\hzga\桌面\数据导入程序\原始数据文件\20090101_6.dat' 测试没有问题,成功。
但是在VB中调用它,老是报错:《实时错误'-2147217900(80040e4)' 第1行'.5' 附近有语法错误》然后程序中断。 不知道是怎么回事?请高人指点。
CREATE PROCEDURE hot_input_test33
@str_t char(11),
@str_f char(150)
as
set nocount on
declare @str1 as char(11)
select @str1='GMM'+cast(rand()*1000000 as char(8)) --临时使用的表,gmm后面的数字随机生成 -----表不存在,则新建一张表
if not exists (select * from sysobjects where id = object_id(''+@str_t+'') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
exec('create table ['+@str_t+']([hi_device] int,[hi_time] datetime,[hi_mmmi] char(15),[hi_iiii] char(15))' )
end
----
exec('create table ' +@str1+'([hi_device] int,[col002] varchar(255),[col003] varchar(255),[hi_time] datetime,
[hi_mmmi] char(15),[hi_iiii] char(15),[col7] varchar(255))') ---建临时使用的表
exec ('master..xp_cmdshell '+''''+' bcp test..'+@str1+' in "'+@str_f+'" -c -t"," -SHZGA-LWM -Usa -P55555'+'''')
--将数据导入临时表
exec('insert into ['+@str_t+'] select [hi_device],[hi_time],[hi_mmmi],[hi_iiii] from ['+@str1+']') --从临时表取数据存入数据库中的表中(表有则追加)
exec('drop table ['+@str1+']') --删除临时使用的表 set nocount off
GO
--exec hot_input_test 'gsm20090101','C:\Documents and Settings\hzga\桌面\数据导入程序\原始数据文件\20090101_6.dat' 测试没有问题,成功。
但是在VB中调用它,老是报错:《实时错误'-2147217900(80040e4)' 第1行'.5' 附近有语法错误》然后程序中断。 不知道是怎么回事?请高人指点。
exec('insert into ['+@str_t+'] select [hi_device],[hi_time],[hi_mmmi],[hi_iiii] from ['+@str1+']')
我后来做了修改:
exec('insert into ['+@str_t+'] select cast([hi_device] as int),cast([hi_time] as datetime),cast([hi_mmmi] as char(15)),cast([hi_iiii] as car(15)) from ['+@str1+']') 还是出现之前的错误。
改到指定盘符下试试。
是用set还是select ?
谢谢各位的帮忙 ^_^ ^_^ ^_^