高手请进!如何在MS-SQL存储过程中使一个变量来代替表名、列名?

topdogXP 2004-12-10 04:42:01
我在一个小程式时要根据用户的选择来修改指定的表,我想在存储过程中使用一变量来接收用户指定的表名。看了一本书:说默认情况下参数只能代替常量,而不能代替表名、列名或其它数据库对象的名称。哪么怎么设置成非默认状态,使之能够代替表名、列名或其它的数据库对象呢?请高手给点指示。不胜感激!!
...全文
96 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
topdogXP 2004-12-10
  • 打赏
  • 举报
回复
按WangZWang(阿来)的应该写成:

CREATE PROCEDURE p_import
AS
Declare @tbname varchar(255)
Declare @file varchar(255)
Exec('select * into '+@tbname+' from OPENROWSET('''+'MICROSOFT.JET.OLEDB.4.0'''+','+'''Excel 5.0;HDR=YES;DATABASE='+@file+''',sheet1$)')
GO

是吗?我试试先!先谢了! 另请问怎么在导入数据过程中对其进行控制.例如控制生成的表的表头字段为自定义! 因为我有一个MES系统从OREACL中导出的数据表头不服合我的要求,我怎么控制在导入MS-SQL过程中使其自定义化??请高手帮忙!!!
topdogXP 2004-12-10
  • 打赏
  • 举报
回复
例如:
create proceduer pd_import
@tbname varchar(255),@filename varchar(255)
as
select * into @tbname form OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=@filename',sheet1$)
go

我想在导入一EXCEL表时文件名,跟要创建的表名由@tbname,@filename传入!但这样子不行!
WangZWang 2004-12-10
  • 打赏
  • 举报
回复
要动态语句:

Declare @tbl varchar(100)
............

exec('Select * from '+@tbl+..........)

skyboy0720 2004-12-10
  • 打赏
  • 举报
回复
不是很明白楼主意思,想用变量就用啊!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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