create PROCEDURE dbo.SP_SPIDtoIP @SPID int 
AS 
-- SPID to MAC 
-- lj 
DECLARE @MAC as varchar(12) 
SELECT @MAC = NET_ADDRESS FROM master..sysprocesses WHERE SPID = @SPID 
-- MAC to IP 
DECLARE @MACDisplay as varchar(18) 
DECLARE @IP as varchar(15) 
CREATE TABLE #temp (OUTPUT varchar(255) null) 
SET NOCOUNT ON 
INSERT INTO #temp EXEC master..xp_cmdshell 'arp -a' 
if @@error<>0 
begin 
RAISERROR ('The level for job_id:%d should be between %d and %d.', 16, 1) 
--ROLLBACK TRANSACTION 
end 
SELECT @MACDisplay = LEFT(@MAC, 2) + '-' + SUBSTRING(@MAC, 3, 2) + '-' + SUBSTRING(@MAC, 5, 2) + '-' + SUBSTRING(@MAC, 7, 2) + '-' + SUBSTRING(@MAC, 9, 2) + '-' + SUBSTRING(@MAC, 11, 2) SELECT @IP = SUBSTRING(output, 3, 15) FROM #temp WHERE output LIKE '%' + @MACDisplay + '%' 
-- Resolve the IP 
--DECLARE @CMD as varchar(100) 
--select @CMD = 'master..xp_cmdshell "ping -a ' + @IP + '"' 
--exec (@CMD) 
DROP TABLE #temp 
SET NOCOUNT OFF GO在delphi中如何输入 输出呢 ~!

解决方案 »

  1.   

    BAIDU一下就出来了,而且都很详细的 
      

  2.   

    ADOStoredProc ,属性Parameters 对应你的 @XX 变量 
      

  3.   

    给你一个参考的例子吧:
                      with ADOStoredProc  do
                    begin
                        Close;
                        ProcedureName:='hyz_df';//就是你要调用的存储过程名
                        Parameters.Clear;
                        Parameters.CreateParameter('@j',ftinteger,pdinput,4,j);//以下均为你要传递的参数
                        Parameters.CreateParameter('@sj',ftfloat,pdinput,8,sj);
                        Parameters.CreateParameter('@df', ftfloat, pdoutput,4,0);
                        Parameters.CreateParameter('@hg',ftinteger,pdoutput,4,0);
                        Prepared := True;
                        ExecProc;
                        df := formatfloat('0.00',Parameters.ParamByName('@df').Value);//返回的值
                        hg := inttostr(Parameters.ParamByName('@hg').Value);
                    end;
      

  4.   

    关于输入,输出;
    输入:可以这样
    var
      kkk:integer
    begin
    With query do
    begin
    close;
    clear;
    sql.text := format('exec SP_SPIDtoIP %d',[kkk])
    execsql;
    end;如果有输出项的话:上面的用法中不能输出值
    则必须用ADOStoredProc.先将procName设定为SP_SPIDtoIP
    with ADOStoredProc  do
    begin
    close; 
    prepared := false;
    parameters.Params[0].values := kkk;
    prepared := true;
    execproc;
    Return := parameters.params[1].value;
    end;