CREATE PROCEDURE [name].[tj] 
    @id  int,
    @da char,
    @m1  money  output,
    @m2  money  output,
    @m3  money  output
AS 
   begin transaction


sql server 2000 。delphi 里怎么调用老报错,请问怎么写,怎么调,
参数怎么设,类型怎么设?

解决方案 »

  1.   

    你怎么调的,在sql 2000中的查询分析器中执行出错不,在Delphi中有好几种调用方式,我常用query来调用. query.sql.text:=' exec  存储过程名  参数名'  ; Query.sql.text.Exec;
      

  2.   

    希望这篇文章对你有帮助
    Delphi中使用存储过程 
    ============================
    一、概述 
    Delphi  +  MS  SQL  Server是目前最为流行的管理信息系统开发环境和工具。Delphi的强大数据库操作控件极大地减轻了开发人员的工作量,在这些控件中,最常用的有TQuery、TTable、TADOQuery、TADOTable、TADODataSete等,这些控件执行查询操作时有一个共同的特点,即将所有数据库记录从服务器取回客户端,再根据查询的条件进行筛选。很明显,如果有大量的数据在服务器与客户端之间传递,就会降低程序执行的速度,影响应用程序的性能。针对这种情况,MS  SQL  Server数据库和Delphi开发工具都提供了存储过程来解决这类问题。存储过程是一段在服务器上执行的程序,它在服务器端对数据库记录进行处理,再把结果返回到客户端。通过使用存储过程,一方面可以利用服务器强大的计算能力和速度,另一方面避免把大量的数据从服务器下载到客户端,减少网络上传输量,服务器只需将计算结果传给客户端,其效率之高是非常明显的。 
    二、创建存储过程 
    在MS  SQL  Server上的存储过程可分为二类,一类是类似于select  查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户端,如 
    CREATE  procedure  proc1 
    @dw  char(20) 
    as 
    select  dwdm  from  cchdwdm  where  dw=@dw 
    该存储过程有一个输入参数  @dwdm,以数据集的形式返回结果。 
    另一类存储过程是通过输出参数返回信息或不返回信息,或只执行一个动作。如: 
    CREATE  procedure  proc2 
    @m1  smallint, 
    @m2  smallint 
    @result  int  OUTPUT 
    as 
    select  @result=@m1*@m2 
    该存储过程有二个输入参数@m1、@m2,还有一个输出参数@result。   
    按照创建存储过程的时机来划分,创建存储过程也有二种方式,一是利用MS  SQL  Server的Enterprise  Manager中的SQL  Server  Query  Analyzer工具,此方法较简单,只要输入存储过程语句并保存即可。 
    创建存储过程的另一种方式是利用Delphi的控件,如TQuery、TADOQuery,通过使用SQL语句在运行时动态地创建存储过程。如下例所示。 
    with  query1  do 
    begin 
    paramcheck  :=  false; 
    with  SQL  do 
    begin 
    clear; 
    add(’create  procedure  proc1’); 
    add(’@dw  char(20)’); 
    add(’as’); 
    add(’select  dwdm  from  cchdwdm  where  dw=@dw’); 
    end 
    execsql; 
    end; 三、存储过程的参数 
    存储过程一般有四种参数类型: 
    输入参数,由客户程序向存储过程传递 
    输出参数,由存储过程向客户传递 
    输入/输出参数,可双向传递 
    状态参数,由存储过程向客户返回错误信息 
    通过使用Delphi控件TADOStoredProc或TStoredProc来设置或获取存储过程的参数,如: 
    ADOStoredProc1.parameters.parambyname(’@name’).value:=’张三’; 四、在Delphi中使用存储过程的方法 
    在Delphi中使用存储过程有以下几个步骤: 
    1、把TADOStoredProc或TStoredProc放到窗体上。 
    2、设置参数连接到MS  SQL  Server数据库。 
    3、设置ProcedureName参数,指定存储过程名,也可以在程序运行期设置。 
    4、单击TParameters边上的省略号按钮,如果设置正确,则可看到所有的输入输出参数。 
    5、在代码中设置存储过程的输入参数、执行存储过程并获取返回的数据。 
    通过调用TADOStoredProc控件的parambyname方法,设置好所有的输入参数,再调用open方法执行存储过程。如果存储过程返回参数,同样用parambyname方法获取参数值,如果返回数据集,则用访问数据集的TFields的方法获取各记录。如以下代码所示: ADOStoredProc1.close; 
    ADOStoredProc1.parameters.parambyname(’@dwmc’).value:=’某某单位’;   
    ADOStoredProc1.prepared:=true; 
    ADOStoredProc1.open; 
    label1.caption:=  ADOStoredProc1.fields[0].asstring;
      

  3.   

    调用时直接把存储过程的名称和参数传给SQL SERVER服务器就可以了 
    至于老报错,那就要仔细检查了,比如参数类型是否有错等等