--定时刷新IP记录
create procedure sp_sumNip
--1、来路IP总量写入users_gjjSELECT userURL, COUNT(*) AS nip into #tb1
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'in') a
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=a1.nip
from #tb1 a1
where users_gjj.url=a1.userURLgo--2、把来路24小时IP总量写入users_gjj
SELECT userURL, COUNT(*) AS nip into #tb2
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'in' and dt=getdate()) aa
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=aa2.nip
from #tb2 aa2
where users_gjj.url=aa2.userURLgo
--3、来路IP总量写入users_gjjSELECT userURL, COUNT(*) AS nip into #tb3
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'out') b
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=b1.nip
from #tb3 b1
where users_gjj.url=b1.userURLgo
--4、把来路24小时IP总量写入users_gjjSELECT userURL, COUNT(*) AS nip into #tb4
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'out') bb
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=bb2.nip
from #tb4 bb2
where users_gjj.url=b2.userURLgo创建上面的存储过程提示下面的错误: 但是把上边的4块代码在"企业管理器"中运行却是对的!服务器: 消息 156,级别 15,状态 1,过程 sp_sumNip,行 5
在关键字 'SELECT' 附近有语法错误。
服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 '#tb2' 的对象。
服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 '#tb3' 的对象。
服务器: 消息 107,级别 16,状态 2,行 10
列前缀 'b2' 与查询中所用的表名或别名不匹配。
create procedure sp_sumNip
--1、来路IP总量写入users_gjjSELECT userURL, COUNT(*) AS nip into #tb1
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'in') a
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=a1.nip
from #tb1 a1
where users_gjj.url=a1.userURLgo--2、把来路24小时IP总量写入users_gjj
SELECT userURL, COUNT(*) AS nip into #tb2
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'in' and dt=getdate()) aa
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=aa2.nip
from #tb2 aa2
where users_gjj.url=aa2.userURLgo
--3、来路IP总量写入users_gjjSELECT userURL, COUNT(*) AS nip into #tb3
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'out') b
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=b1.nip
from #tb3 b1
where users_gjj.url=b1.userURLgo
--4、把来路24小时IP总量写入users_gjjSELECT userURL, COUNT(*) AS nip into #tb4
FROM (SELECT userURL
FROM ipList_gjj
WHERE oi = 'out') bb
GROUP BY userURL
ORDER BY userURLupdate users_gjj set inip=bb2.nip
from #tb4 bb2
where users_gjj.url=b2.userURLgo创建上面的存储过程提示下面的错误: 但是把上边的4块代码在"企业管理器"中运行却是对的!服务器: 消息 156,级别 15,状态 1,过程 sp_sumNip,行 5
在关键字 'SELECT' 附近有语法错误。
服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 '#tb2' 的对象。
服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 '#tb3' 的对象。
服务器: 消息 107,级别 16,状态 2,行 10
列前缀 'b2' 与查询中所用的表名或别名不匹配。
在关键字 'SELECT' 附近有语法错误。-- 少了个AScreate procedure sp_sumNip
--1、来路IP总量写入users_gjj
AS
SELECT userURL, COUNT(*) AS nip into #tb1
……
好像都缺
修改了,还有一点问题,dt=getdate() 修改成 getdate() - dt <= 24 (小时) 代码怎么写?
数据库中已存在名为 '#tb2' 的对象。
服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 '#tb3' 的对象。
服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 '#tb4' 的对象。
IF OBJECT_ID('Tempdb.dbo.#P_CO_PERMONTH1030') IS NOT NULL
DROP TABLE #P_CO_PERMONTH1030
--少个as
as
......
update users_gjj set inip=bb2.nip
from #tb4 bb2
where users_gjj.url=b2.userURL
--#tb4是给的表别名吗?在where 子句中的对象b2应该是bb2吧
要该为
update users_gjj set inip=bb2.nip
from #tb4 bb2
where users_gjj.url=bb2.userURL
只是传送给查询分析器识别的命令你现在写的存储过程是
create procedure XXX
as
select...
GO
那么查询分析器会认为以上的语句为一个小结,那么下面的语句就不包含在存储过程里了,那么下面的语句肯定就立马执行了。
如果去掉了所有GO,那么查询分析器就会认为create procedure XXX以后的语句都是可以他的内容只要语法没错误,就过关了!
你可以试试只保留最后一个GO,这样也可以执行成功!