请帮忙分析下面一段代码!

topdogXP 2004-12-13 12:54:54
我在MS-SQL中有一存储过程如下:
CREATE PROCEDURE p_import
AS
Declare @tbname varchar(255)
Declare @file varchar(255)
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
Exec('select * into ' +@tbname+' from OPENROWSET('''+'MICROSOFT.JET.OLEDB.4.0'''+','+'''Excel 5.0;HDR=YES;DATABASE='+@file+''',sheet1$)')
SET ANSI_NULLS OFF
SET ANSI_WARNINGS OFF
GO

然后在按钮处理事件中加入以下代码!
begin
ADOStoredProc1.ProcedureName:='p_import;1';
ADOStoredProc1.Prepared:=true;
ADOStoredProc1.Parameters.ParamByName('@tbname').Value:=edit2.Text;
ADOStoredProc1.Parameters.ParamByName('@file').Value:=edit1.Text;
ADOStoredProc1.ExecProc;
end
运行时老是说:'@tbname'参数未找到!
另还有:在设ADOStoredProc1.ACTIVE:=TRUE时会提示:
'异类查询要求为连接设置ANSI_NULLS和ANSI_WARNIGNGS选项.这将确保一致的查询语义,请启用这些选项,然后重新发出查询.'
郁闷了很久,不知道什么原因,请各大鱼大虾指点迷津!!不胜感激!!!

...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dujian_xian 2004-12-27
  • 打赏
  • 举报
回复
给ADOStoredProc1.Parameters参数传值应该去掉前面的@。
@是sql server里参数写法,但是参数的声明没有@。
aoeiuvcom 2004-12-22
  • 打赏
  • 举报
回复
试试
ADOStoredProc1.Parameters.ParamByName('tbname').Value:=edit2.Text;
ADOStoredProc1.Parameters.ParamByName('file').Value:=edit1.Text;

我没用过这种调用方式
lextm 2004-12-22
  • 打赏
  • 举报
回复
ADOStoredProc1.Parameters.ParamByName('@tbname').Value.AsString:=edit2.Text;
ADOStoredProc1.Parameters.ParamByName('@file').Value.AsString:=edit1.Text;

不知道是不是要这样改.
wangxt 2004-12-16
  • 打赏
  • 举报
回复
帮你顶

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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