用的是adostoreproc调用
with storequery do
  begin
    Close;
    Parameters.ParamByName('@sj').value:='2004-6-3';//sj为输入参数
      ExecProc;
      end;
//////////////////
///////////
存储过程代码SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO
ALTER     proc test
( @sj datetime)
as 
begin
declare @year char(4),@month char(2),@ny char(6)
SET @year=str(year(@sj),4)
set @month=str(month(@sj),2)
if len(ltrim(rtrim(str(month(@sj),2))))=1 set @month='0'+ltrim(rtrim(@month))
set @ny=@year+@month
select * from dd_tz where rq=@ny
endGO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
///////////////////////

解决方案 »

  1.   

    这只是个简单的测试存储过程
    为什么会出现错误“[microsoft][odbc sql server drivers] 没有执行可选特性”这个“没有执行可选特性”是什么?难道调用的不对,以前没有用过存储过程。
      

  2.   

    你用SQL SERVER的事件查看器追踪一下看看 我没办法实验 也看不出来问题
      

  3.   

    在查询分析器里可以运行
    但是在delphi中执行,还是那个错误,SQL SERVER的事件查看器没有数据,应该是在delphi这断有问题,
      

  4.   

    用ADOQuery试试看ADOQuery.close;
    ADOQuery.SQL.clear;
    ADOQuery.SQL.Add('exec 存取过程名 参数');
    ADOQuery1.ExecSQL;
    这是我执行一个存取过程的代码,可以的! with ADOQuery1 do
          begin
            close;
            SQL.Clear;
            SQL.Add('exec p_update_charge  '''+dbkeep+''','''+dbpath+''','''+dbname+''','''+dbdate+'''');   //调用导入拆机表存取过程
            ADOQuery1.ExecSQL;
          end
      

  5.   

    无返回则用Open嘿嘿,不说也应该明白
      

  6.   

    如insert2003所说,ADOStoredProc与ADOQuery控件一样,查询时用Open
      

  7.   

    我试过了
    用adoquery可以,用adostopro就是不行