dzpos 发表于 2016-4-26 10:01:50

易语言执行SQL语句问题

数据库连接1.执行SQL(#常量1)--就是执行失败调试输出假

常量表里面的常量1长文本

常量1=

--建立域名解析存储过程
CREATE PROCEDURE pr_ymjx (@database AS NVARCHAR(20))
AS
BEGIN
    --建立临时表存储IP
    IF EXISTS (SELECT name FROM sysobjects WHERE name = 'lsip' AND xtype = 'U')
    DROP TABLE lsip
    CREATE TABLE lsip(ip NVARCHAR(200))
    --声明变量
    DECLARE@iptb TABLE(SPID nvarchar(10),
    主机名 nvarchar(20),
   IP地址 nvarchar(20),
    进程PID nvarchar(20),
    备注 nvarchar(200),
      MAC地址 nvarchar(20))--临时ip表
    DECLARE@str AS NVARCHAR(300),         --查询字符串
      @flag AS NVARCHAR(10),--判断是否可以ping通
      @ip AS NVARCHAR(20),   --返回的ip地址
      @spid AS NVARCHAR(20),--spid进程
      @hostname AS NVARCHAR(20),--主机名
      @hostprocess AS NVARCHAR(20), --系统进程
      @net_address AS NVARCHAR(20), --MAC地址
      @menuAS NVARCHAR(200) --软件POS登记备注
    --声明游标
    DECLARE cur_ymjx CURSOR
    FOR
    --查询正在使用软件的对应进程信息
    SELECT a.spid,RTRIM(LTRIM(a.hostname)), --主机名
    LTRIM(RTRIM(a.hostprocess)),    --进程PID
    LTRIM(RTRIM(a.net_address))   --MAC地址
    FROMmaster.dbo.sysprocesses a,
   master.dbo.sysdatabases b
    WHERE a.dbid = b.dbid and
   a.loginame in
('hb','hbv7','iss','isszmv9','isscy4','issws','isszmbalv3',
'starnet','issnatwst','hbposV8','hbfsv9','starishop','issbakev9',
'issfoodv6','issyytv3') and
          b.name = @database
    OPEN cur_ymjx
    FETCH NEXT FROM cur_ymjx INTO @spid,@hostname,@hostprocess,@net_address
    WHILE @@FETCH_STATUS = 0
    BEGIN
--执行ping主机名,并插入到临时IP表#lsip
SELECT @str = 'ping ' + @hostname + ' -a-n 1 -l 1'
INSERT INTO lsip EXEC master.dbo.xp_cmdshell @str
--删除空信息
DELETE FROM lsip WHERE ip IS NULL OR ip = ''
--判断是否可以ping通
SELECT TOP 1 @flag = CHARINDEX(':',ip) FROM lsip ORDER BY ip DESC
IF @flag = '0' --不能ping通处理
SELECT @ip = '前台或外网连接'
ELSE
--截取IP地址
SELECT TOP 1 @ip = SUBSTRING(ip,12,CHARINDEX(':',ip)-12)
FROM lsip ORDER BY ip DESC
--主机名为空处理
IF @hostname = ''
SELECT @hostname = '未知'
DELETE FROM lsip
--逐行插入最终所需信息
INSERT @iptb SELECT @spid,@hostname,@ip,@hostprocess,
      (select top 1 posdesc from t_sys_pos_status where hostname = @hostname),
@net_address
FETCH NEXT FROM cur_ymjx INTO @spid,@hostname,@hostprocess,@net_address
    END
CLOSE cur_ymjx
DEALLOCATE cur_ymjx
--删除临时表
DROP TABLE lsip
--查询最终信息记录
IF EXISTS (SELECT * FROM sysobjects WHERE NAME = 'tb_ipcx' AND xtype = 'U')
DROP TABLE tb_ipcx
SELECT * into tb_ipcx FROM @iptb
--修正空主机名
UPDATE tb_ipcx
SET主机名 = b.主机名 , IP地址 = b.IP地址
FROM (SELECT * FROM tb_ipcx WHERE LEFT(IP地址,7) = '前台或外网连接') a,
   (SELECT * FROM tb_ipcx WHERE LEFT(IP地址,7) <> '前台或外网连接') b
WHERE a.MAC地址 = b.MAC地址
END

因陀罗 发表于 2016-8-22 19:58:45

幼幼帝国论坛,幼幼王朝,呦吧,拯救帝国,我愛幼幼,愛又閣 幼幼论坛最新地址

幼幼帝国论坛uudiguo.com (推荐)

?最私密的内容都在幼幼帝国论坛!?

纯粹个人分享.欢迎转发
页: [1]
查看完整版本: 易语言执行SQL语句问题