存储过程中使用 IF…else … 时出错。大家来帮我一把。(40分)

  • 主题发起人 主题发起人 gxdog
  • 开始时间 开始时间
G

gxdog

Unregistered / Unconfirmed
GUEST, unregistred user!
CREATE PROCEDURE abc
@sys_cb int

AS
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'spdm_21')
DROP VIEW spdm_21
GO
CREATE VIEW spdm_21
AS
SELECT Bmkc.bmdm, Bm.bmmc, bmkc.spdm, Bmkc.bysl FROM bmkc INNER JOIN bm ON Bmkc.bmdm = Bm.bmdm
go

if sys_cb=0
begin
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'spdm_22')
DROP VIEW spdm_22
GO
CREATE VIEW spdm_22
as
SELECT spdm_21.bmdm, spdm_21.bmmc, spdm_21.spdm, Spdm.spmc, Spdm.jldw, Spdm.lbdm, spdm_21.bysl, spdm.mqkczs,
Spdm.bykcpj, Spdm.lsj, Spdm.pfj FROM spdm_21 INNER JOIN spdm ON spdm_21.spdm = spdm.spdm
go

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'spdm_23')
DROP VIEW spdm_23
GO
CREATE VIEW spdm_23
as
SELECT spdm_22.bmdm, spdm_22.bmmc, spdm_22.spdm, spdm_22.spmc, Spdm_22.jldw, spdm_22.lbdm, spdm_22.bysl,
spdm_22.mqkczs, spdm_22.lsj, spdm_22.pfj, spdm_22.bykcpj, splb.lbmc FROM spdm_22
INNER JOIN splb ON spdm_22.lbdm = splb.lbdm
go
end
else
begin



IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'spdm_22')
DROP VIEW spdm_22
GO
CREATE VIEW spdm_22
as
SELECT spdm_21.bmdm, spdm_21.bmmc, spdm_21.spdm, Spdm.spmc, Spdm.jldw, Spdm.lbdm, spdm_21.bysl, spdm.mqkczs,
Spdm.byydpj, spdm.lsj, spdm.pfj FROM spdm_21 INNER JOIN spdm ON spdm_21.spdm = spdm.spdm
go
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'spdm_23')
DROP VIEW spdm_23
GO
CREATE VIEW spdm_23
as
SELECT spdm_22.bmdm, spdm_22.bmmc, spdm_22.spdm, spdm_22.spmc, Spdm_22.jldw, spdm_22.lbdm, spdm_22.bysl, spdm_22.mqkczs,
spdm_22.lsj, spdm_22.pfj, spdm_22.byydpj, splb.lbmc FROM spdm_22
INNER JOIN splb ON spdm_22.lbdm = splb.lbdm
go
end


我在检查语法提示: 错误170:第5行:"spdm_22'附近有语法错误
没有添加
if @sys_cb
begin
end
else
begin
之前,是正确的。请问如何使用这个IF?
 
if sys_cb=0 ->
if @sys_cb=0

-----
http://www.8421.org
 
补充:
我在检查语法提示: 错误170:第5行:"spdm_22'附近有语法错误
没有添加
if @sys_cb
begin
end
else
begin
之前,是正确的。请问如何使用这个IF?
上面的一句if @sys_cb 我应少了个=0,应为:if @sys_cb=0
 
难道没有人?
 
I don't think you can create VIEW in stored procedure (in SQL 7.0)
 
由于要连接几个表,所以我用到视图。我想IF ELSE语法是没有错,出错应该是视图。
但不懂怎么处理。

难道各位真的没有什么高见?
 
我写的这个存储过程在语法检查时,提示:错误170:第5行:"spdm_22'附近有语法错误
我是问如何把它改正,实现几个表的正确连接。
 
170是哪行?
 
170行在哪里,做个标记呀。
 
对不起,帮不上忙
 
还有不明白的就是为什么视图还要删除掉再重建呢?
不如直接用视图好了,效率高呀
 
170是哪行?
在这里:在if sys_cb=0 紧接下面一句。
 
你最上面的帖子是原文拷贝过来的罢
如果是,当然是错的了
就如qdyoung所说
是if @sys_cb=0,而不是if sys_cb=0
 
该说的别人呢都说了 我说不上了 问题就在那吧 ! 如果是你的数据视图出问题 那你就自己解决吧 !
 
对不起,其实我也是这样的if @sys_cb=0,只是一时疏忽。即使是if @sys_cb=0
问题仍然是出错为170。
 
你确定存储过程可以Create视图吗?
 
楼上:你确定存储过程可以Create视图吗?

这个我没有想过。
 
同意春天的故事,在存储过程应不可创建View
 
多人接受答案了。
 
后退
顶部