如何用SQL创建一个存储过程来修改表中指定列的数据?

例如我有一个表student,我想创建一个存储过程,能根据我输入的列名@column和要修改的值@data,来修改列@column中的数据为@data?建表:create... 例如我有一个表student,我想创建一个存储过程,能根据我输入的列名@column和要修改的值@data,来修改列@column中的数据为@data?
建表:
create table student
(student_name char(10),student_sex char(2))
建存储过程:
create proc 更新student @column char(10),@data
as
(........)
我想执行存这个存储过程,通过指定@column和@data的值,来修改列@column的值为@data,
例如exec 更新student student_name,张明
那么存储过程“更新student”中的as(.....)应该怎么写?
二楼的,我用你的方法不行啊
create proc 更新职工记录 @employee_id char(6),@column char(30),@data char(8)
as
declare @sql char(4000)
set @sql='update employee set'+@column+'='+@data+'where employee_id=@employee_id'
exec (@sql)
go
exec 更新职工记录 10010,employee_name,张三
执行后提示列名张三无效!
执行
update employee
set employee_name=张三
where employee_id=@employee_id 提示也是列名张三无效
但是直接执行
update employee
set employee_name='张三'
where employee_id=@employee_id
是可以修改的
大家还有什么好的方法能帮我解决我的问题啊?谢谢!!!!

三楼的,我的问题不是要修改列名啊,是修改表中的数据,不过还是十感谢你!
展开
 我来答
百度网友f623728c7
2007-11-19 · 超过14用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:41.5万
展开全部
简单啊!我举个例子给你
create proc upd_student @column varchar(10),@data varchar(8)
as
declare @sql nvarchar(4000)

set @sql = 'update student set '+@column+' = '''+@data+''' where id = 1'
execute @sql
go
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
数据库强者
2007-11-14 · TA获得超过525个赞
知道答主
回答量:329
采纳率:0%
帮助的人:0
展开全部
哦!明白你的意思了!

create procedure here @add_row varchar(5) ,@test varchar(20)

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
if @add_row is null
print '输入列名'
else
if
(select count(*) from information_schema.columns where table_name = 'student' and column_name=@add_row)>'0'
print '已存在'
else
exec ('alter table student add '+@add_row+' char(10)')
exec ('insert into student ('+@add_row+')values'+@test)
END
GO
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式