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中如何输入 输出呢 ~!
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中如何输入 输出呢 ~!
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;
输入:可以这样
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;