关于sql server的存储过程的问题

asdf 2000-12-09 06:36:00
我想创建这样的存储过程:
向它传递一个参数,为某一个表的名字,
然后我想在这个存储过程中操作由这个参数确定的表中的数据,不是一般的操作,而是select,我需要操作select返回的结果集。
怎么办?谁能告诉我?
我需要执行动态sql,因为表的名字是从参数传递过来的。这使得我只能使用sp_executesql来执行,那么,如果我执行如下语句:
declare @sql nvarchar(1000)
select @sql='select * from' + @table_name --这是一个参数,表的名字
sp_executesql @sql
-------------------------------------------------------
显然,sp_executesql的执行将产生一个结果集,即由参数确定的表的全部内容。我现在想操作这个结果集,比如将其中的一些字段的值赋给某些变量,该怎么操作?
...全文
213 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pjy 2000-12-11
  • 打赏
  • 举报
回复
你就象一般写SQL语句的方法用你的变量TABLE名来写一些STRING语句,然后用EXEC()来执行。
hsboy 2000-12-10
  • 打赏
  • 举报
回复
假设我的结果集只有一条记录,这个记录只有一个字段,该怎么把它赋给一个变量?
dragonleon 2000-12-10
  • 打赏
  • 举报
回复
VB里是用"& 变量名 &" 表示的
ePing 2000-12-10
  • 打赏
  • 举报
回复
create procedure SP (@TableName varchar(10))
as
declare
@SqlStr varchar(100),
@Temp varchar(20)
begin
select @SqlStr = 'select * into ##Table from ' + @TableName
exec(@SqlStr)
--将这个动态的数据表的所有内容放在一个全局临时表中,你就可以对他进行一些操作了,
eg: select * from ##Table
select @Temp = XXXX from ##Table
end;
希望对你有一些帮助.

三少 :o)
yangzi 2000-12-10
  • 打赏
  • 举报
回复
我身边没有SQL server,我没试过,如果select 语句报错,你自己查book online改一下.
yangzi 2000-12-10
  • 打赏
  • 举报
回复
那很容易呀,
给你个例子吧:
declare @fieldname char(20) --字段名
declare @Desc char(20) --该字段的内容
declare @tablename char(20) --表名

select @desc=[@tablename.@fieldname] from [@tablename]

return @desc
yangzi 2000-12-09
  • 打赏
  • 举报
回复
说的明白些。
你是要对结果集的一条记录的不同字段的付给一些变量,还是对结果集的一组记录的不同的字段付给不同的变量,若是前着,你可以再定义一组变量,分别表示字段名和变量名。如果是后者,建议使用游标。那简直是恶梦。
nononono 2000-12-09
  • 打赏
  • 举报
回复
想对结果集进行修改?得用CURSOR吧?

34,838

社区成员

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

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