存储过程传参,求助

elysium1984 2008-04-16 08:07:58
建立一个存储过程,目的是从access数据库中导入sql数据库。
代码如下:
create proc zhao @a varchar(255)
as
begin

declare @TMP_COM_BASEARG varchar(255)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TMP_COM_BASEARG]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TMP_COM_BASEARG]

Select * INTO TMP_COM_BASEARG FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="@a";User ID=;Password=')...COM_BASEARG

end



exec yinlian e:\BMS_STO(101000).mdb



其中,access数据库在地址及数据库名称是要传入的变量,但是在建立数据库的过程中就出现错误了
用拼接字符串的形式也不行
请问高手帮忙解答一下。分不多,望见谅。
...全文
71 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
elysium1984 2008-04-17
  • 打赏
  • 举报
回复
谢谢
jinjazz 2008-04-16
  • 打赏
  • 举报
回复
create proc zhao @a varchar(255) 
as
begin

declare @TMP_COM_BASEARG varchar(255)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TMP_COM_BASEARG]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TMP_COM_BASEARG]
declare @drv varchar(8000)
set @drv='Select * INTO TMP_COM_BASEARG FROM OPENDATASOURCE (''Microsoft.Jet.OLEDB.4.0'',
''Data Source="'+@a+'";User ID=;Password='')...COM_BASEARG'

exec (@drv)

end
elysium1984 2008-04-16
  • 打赏
  • 举报
回复
create proc zhao @a varchar(255)
as
begin

declare @TMP_COM_BASEARG varchar(255)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TMP_COM_BASEARG]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TMP_COM_BASEARG]

Select * INTO TMP_COM_BASEARG FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="'+@a+'";User ID=;Password=')...COM_BASEARG

end
这样的话,显示,+号附近有错误!
jinjazz 2008-04-16
  • 打赏
  • 举报
回复
Select * INTO TMP_COM_BASEARG FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="'+@a+'";User ID=;Password=')...COM_BASEARG

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧