SQL SERVER 2000 数据库中定义存储过程修改表结构给表添加列时出现的不可预料错误

supercsharp1 2007-03-17 09:02:12
use student1
create procedure AddLesn @lesn int
as
alter table StuGrd
add @lesn int null
go

服务器: 消息 111,级别 15,状态 1,行 2
'CREATE PROCEDURE' 必须是批查询中的第一条语句。
服务器: 消息 170,级别 15,状态 1,行 5
第 5 行: '@lesn' 附近有语法错误。

错在什么地方了?
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
中小刀 2012-01-18
  • 打赏
  • 举报
回复
[add @lesn int null ] 这个地方吧
BonnieChen 2007-03-30
  • 打赏
  • 举报
回复
是不是要这样写啊
create procedure AddLesn
(
@Lesn nvarchar(20)
)
as
alter table StuGrd
add @Lesn int null
supercsharp1 2007-03-17
  • 打赏
  • 举报
回复
create procedure AddLesn @Lesn nvarchar(20)
as
alter table StuGrd
add @Lesn int null
服务器: 消息 170,级别 15,状态 1,过程 AddLesn,行 4
第 4 行: '@Lesn' 附近有语法错误。
哪个地方错了?
kissknife 2007-03-17
  • 打赏
  • 举报
回复
很简单,分两次执行,每次只执行一条:
1.
use student1

2.
create procedure AddLesn @lesn int
as
alter table StuGrd
add @lesn int null
supercsharp1 2007-03-17
  • 打赏
  • 举报
回复
那怎么怎么知道是在哪个地方创建数据库的?
jietuan 2007-03-17
  • 打赏
  • 举报
回复
创建存储过程的语句必须是第一条,所以你应该去掉 use 语句,而且有些语句是不能在存储过程里执行的,如create database
kissknife 2007-03-17
  • 打赏
  • 举报
回复
第一个消息很明显:
和第二个语句:
create procedure AddLesn @lesn int
as
alter table StuGrd
add @lesn int null
go
只能作为批量语句中的第一句来执行,就是不能放在use student1
之后...

//创建存储过程、或创建视图、或创建触发器语句块在批量语句中必须作为第一句.

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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