如何用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
是可以修改的
大家还有什么好的方法能帮我解决我的问题啊?谢谢!!!!
三楼的,我的问题不是要修改列名啊,是修改表中的数据,不过还是十感谢你! 展开
建表:
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
是可以修改的
大家还有什么好的方法能帮我解决我的问题啊?谢谢!!!!
三楼的,我的问题不是要修改列名啊,是修改表中的数据,不过还是十感谢你! 展开
2个回答
展开全部
简单啊!我举个例子给你
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哦!明白你的意思了!
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询