MSSQL2000 建立存储过程时可不可以禁止检查语法?

assiwe 2010-05-31 10:36:19
有办法吗?我写的存储过程没问题,但是检查语法不通过,也就更改不了
...全文
99 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 kerafan 的回复:]
引用 10 楼 haiwer 的回复:
select * into
就是忌讳用的了

求解释,搬凳子等开课
[/Quote]
主要是*代表不确定,未知
into需要建立表,into到临时表时会引起临时库系统表的加锁,into到永久表可能问题更多,并发情况的表名肯定重复

综合来说,用了麻烦多多,那就忌讳了
老黎 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 haiwer 的回复:]
select * into
就是忌讳用的了
[/Quote]
求解释,搬凳子等开课
htl258_Tony 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 assiwe 的回复:]
引用 7 楼 chuifengde 的回复:

这是你的提问:
CREATE PROCEDURE pro
@var sysname
AS
if @var='a'
select * into #mb from mb
else if @var= 'b'
select * into #mb from mb

这样你自认为没问题,但是检查语法是不能通过的,原因就是不能滞后名称解析
……
[/Quote]


CREATE PROCEDURE dfe
@var SYSNAME
AS
IF OBJECT_ID('t')>0
DROP TABLE t
EXEC (
'SELECT colum INTO t
FROM table1;

SELECT colum
FROM t'
)
GO
assiwe 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 htl258 的回复:]

不知道你想要什么
[/Quote]
不想要什么,就是好奇而已
htl258_Tony 2010-05-31
  • 打赏
  • 举报
回复
CREATE PROCEDURE pro
@var SYSNAME
AS
SELECT * INTO #mb FROM mb WHERE 1 = 0
IF @var='a'
INSERT INTO #mb SELECT * FROM mb
ELSE
IF @var='b'
INSERT INTO #mb SELECT * FROM mb
GO
可以先搭好框架,再判断条件插入数据。
assiwe 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chuifengde 的回复:]

这是你的提问:
CREATE PROCEDURE pro
@var sysname
AS
if @var='a'
select * into #mb from mb
else if @var= 'b'
select * into #mb from mb

这样你自认为没问题,但是检查语法是不能通过的,原因就是不能滞后名称解析
[/Quote]
这个和这个帖子没关系.

是另外一个问题.这个已经解决了.

我发现在存储过程里drop 一个表,然后重新创建这个表,如果列名和这个表原来的不一样的话就无法创建或者修改.
但是这个存储过程可以运行
chuifengde 2010-05-31
  • 打赏
  • 举报
回复
改成如下:
CREATE PROCEDURE  dfe  
@var sysname
AS
drop table t

select colum into t from table1
exec('select colum from t')

GO
昵称被占用了 2010-05-31
  • 打赏
  • 举报
回复
select * into
就是忌讳用的了
昵称被占用了 2010-05-31
  • 打赏
  • 举报
回复
换换思路,select into能少用就少用
htl258_Tony 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 assiwe 的回复:]
比如

SQL code
CREATE PROCEDURE dfe
@var sysname
AS
drop table t

select colum into t from table1
select colum from t

GO

如果t已经存在并且没colum这个列名的话就无法创建,但是运行没问题
[/Quote]不知道你想要什么
chuifengde 2010-05-31
  • 打赏
  • 举报
回复
这是你的提问:
CREATE PROCEDURE pro
@var sysname
AS
if @var='a'
select * into #mb from mb
else if @var= 'b'
select * into #mb from mb

这样你自认为没问题,但是检查语法是不能通过的,原因就是不能滞后名称解析
assiwe 2010-05-31
  • 打赏
  • 举报
回复
比如
CREATE PROCEDURE  dfe  
@var sysname
AS
drop table t

select colum into t from table1
select colum from t

GO

如果t已经存在并且没colum这个列名的话就无法创建,但是运行没问题
pt1314917 2010-05-31
  • 打赏
  • 举报
回复
呵呵。晕。。。都不通过还说没问题。。。
guguda2008 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 assiwe 的回复:]
有办法吗?我写的存储过程没问题,但是检查语法不通过,也就更改不了
[/Quote]
这句话本身就有问题
Garnett_KG 2010-05-31
  • 打赏
  • 举报
回复
怎么可能没问题,检查语法都不通过。

是你自己认为没问题吧?
昵称被占用了 2010-05-31
  • 打赏
  • 举报
回复
检查语法不通过还说没问题?
alisafan123 2010-05-31
  • 打赏
  • 举报
回复
贴上来

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧