用delphi6调用mssql-sever2000内的存储过程,传递的参数不知那里出了问题?同样的参数值,在mssqlsever内运行以下代码得的数据同在delphi内的运行的插入数据不同,真是怪了,
但用delphi的参数查询又没问题?就是用它来做插入数据就出问题了。delpi内:ap1.close;
ap1.Parameters[0].Value:='2006001';
ap1.Parameters[1].Value:='2006002';
ap1.execproc;CREATE PROCEDURE ttt1 @Period2 INT,@PeriodYS INT asDelete from TA1
INSERT INTO TABA( dbcode, ACCNT_CODE, AMT, PERIOD )
SELECT DBCode, ACCNT_CODE,AMT, PERIOD
FROM (
SELECT 'AAA' AS DBCode, ACCNT_CODE,
 Sum(AMOUNT*-1) AS AMT, PERIOD
FROM TA1
GROUP BY ACCNT_CODE, PERIOD
 PERIOD Between @PeriodYS-1000 And @Period2UNION SELECT 'BBB' AS DBCode,ACCNT_CODE, Sum(AMOUNT*-1) AS AMT, PERIOD
FROM TA1
GROUP BY ACCNT_CODE, PERIOD
 PERIOD Between @PeriodYS-1000 And @Period2UNION SELECT 'LLL' AS DBCode, ACCNT_CODE, Sum(AMOUNT*-1) AS AMT, PERIOD
FROM TA1
GROUP BY ACCNT_CODE, PERIOD
 PERIOD Between @PeriodYS-1000 And @Period2UNION SELECT 'AAA' AS DBCode, ACCNT_CODE, Sum(AMOUNT*-1) AS AMT, PERIOD
FROM TA1
GROUP BY ACCNT_CODE, PERIOD
 PERIOD Between @PeriodYS-1000 And @Period2-1000
UNION SELECT 'BBB' AS DBCode, ACCNT_CODE, Sum(AMOUNT*-1) AS AMT, PERIOD
FROM TA1
GROUP BY ACCNT_CODE, PERIOD
 PERIOD Between @PeriodYS-1000 And @Period2-1000UNION SELECT 'LLL' AS DBCode, ACCNT_CODE, Sum(AMOUNT*-1) AS AMT, PERIOD
FROM TA1GLLL
GROUP BY ACCNT_CODE, PERIOD
 PERIOD Between @PeriodYS-1000 And @Period2-1000
)A
GO

解决方案 »

  1.   

    使用事业探查器抓一下SQL语句看看
      

  2.   

    sp.connection:=
    sp.close;
    sp.parameters.refresh;
    sp.parameters.parambyname('@bgnDate').value:=
    ..................
    sp.execute;估计你参数用0,1这样访问,把开始时间和结束时间写反了
      

  3.   

    你可以抓下看实际的sql,看参数是否正确。
      

  4.   

    ap1.close;
    ap1.Parameters[0].Value:='2006002';
    ap1.Parameters[1].Value:='2006001';我用edit时得到参数值应是这个的,为了简化,搞反,但问题还是同样存在的。不知为何?在sql-server内的query analyzer内运行又没有问题啊!同一个按钮,同样的参数不变,连续按几次得到的数据不同,怪不?