如何在delphi中编程实现给存储过程中的参数赋值?

解决方案 »

  1.   

    例:with MyStoredProc do
    begin
      ParamByName('@StudID').AsString:='123456';
      ExecProc;
    end;MyStoredProc 是存储过程控件名
    @StudID 是存储过程中定义的变量
      

  2.   

    就这样,跟SQL查询中的动态参数传递类似啊
      

  3.   

    ParamByName('@StudID').AsString:='123456';对吗?
    你们用的是什麽存储过程控件?
    我用的是adostoredproc,怎麽没有parambyname?而且也没有asstring
      

  4.   

    AdoStoredProc1.Parameters.ParamByName('@StudID')).AsString:='123456';
      

  5.   

    没有AsString,而且老是提示我没找到我定义的参数,是怎麽回事?
      

  6.   

    ParamByName('@StudID').AsString:='123456';
                    |------存储过程里的变量名
      

  7.   

    应该写成Parameters.ParamByName('@StudID').value:='123456';
      

  8.   

    也可以这样
    Parameters[1].value=...
    参数数组中第一个是返回值即:Parameters[0].value用于返回存储过程执行的结构,
    参数[1]...等等依次为存储过程的各个参数。
      

  9.   

    看了以前的回复,说是要不自己在程序中重新创建一次,或者Parameters.Refresh,但是前者我试验了一下,是可以,但是后者还是报参数没有定义,报错的参数和没有加那一句不一样,怪事
    正确的
    with StoredProc_GetScore do
      begin
        close;
        ProcedureName := 'CSP_GetGradeString;1';
        Parameters.CreateParameter('@Return_Value', ftInteger, pdReturnValue, 8,
          null);
        Parameters.CreateParameter('@WhichTime', ftString, pdInput, 6, null);
        Parameters.CreateParameter('@SSn', ftString, pdInput, 8, null);
        Parameters.CreateParameter('@gradeString', ftString, pdInputOutput, 500,
          null);
        parameters.parambyname('@SSn').value := xh;
        parameters.parambyname('@WhichTime').value := rq;
        prepared := true;    try
          ExecProc;
          Result := parameters.parambyname('@gradeString').value;
        except
          Result := '没有查询结果或查询出现错误';
        end;
        close;
      end;
    还报错的
    with StoredProc_GetScore do
      begin
        close;
        ProcedureName := 'CSP_GetGradeString;1';
        Parameters.Refresh;
        parameters.parambyname('@SSn').value := xh;
        parameters.parambyname('@WhichTime').value := rq;
        prepared := true;    try
          ExecProc;
          Result := parameters.parambyname('@gradeString').value;
        except
          Result := '没有查询结果或查询出现错误';
        end;
        close;
      end;
      

  10.   

    StoredProc1.parameters.parambyname('..').asinteger:=12;
    execproc;
      

  11.   

    StoredProc1.parameters.parambyname('..').value:=12;
    execproc;