求教一个存储过程的写法

jy00251278 2009-03-16 11:25:17
做了一个功能,
首先简单介绍下表结构,A表,A-B关系表,B表,一下全部以ID号显示,后面还有字段若干
假设A表里有个a1,A-B表有ab1,ab2,ab3,ab4,ab5,ab6(ID号)等关系,
现在A表里添加一个a2,要求复制a1原有关系(ab1,ab2,ab3,ab4...)插入到A-B关系表内,并重新生成ID号

1.因为A-B表内的ID使用ID生成器按照一定步骤生成的

insert into Tbale
(字段名)
select 字段名 from Table where 条件 我无法插入生成的ID编号

ID生成的语句为

DECLARE @SPRSID nvarchar(30)
SET @SPRSID=dbo.f_Next('A_B')

有没有什么方法能解决插入表里ID编号的插入问题


2.一个查询后循环插入的存储过程
循环插入我用的是一个一个读取字符的方法用了

DECLARE @SPRSID nvarchar(30),@a nvarchar(30),@b nvarchar(30),@sql nvarchar(300),@num int ,@i int
set @sql='select top 1 BID from [A_B] where AID=@a and SPRSID not in (select top'+cast(@num as varchar) +SPRSID from A_B order by SPRSID asc) order by SPRSID asc
set @b=exec @sql

这里用set @b=exec @sql是取不到查询的值的
我在网上搜索要用output ,写成exec @sql,@b output 显示“,”附近后错误
请教下exec如何赋值变量



以上的的两种存储过程,只要有一个解决就行了,请大家来帮帮忙
...全文
218 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ks_reny 2009-03-16
  • 打赏
  • 举报
回复
你的表A中,a1與a2 有什麽關係?
子陌红尘 2009-03-16
  • 打赏
  • 举报
回复
try:

declare @sql nvarchar(4000),@b int
set @sql=N'...'
exec sp_executesql @sql,N'@b int output',@b output
dawugui 2009-03-16
  • 打赏
  • 举报
回复
请给出表结构,测试数据,具体算法和结果,谢谢。
htl258_Tony 2009-03-16
  • 打赏
  • 举报
回复
重复了,浪费分.
Rotel-刘志东 2009-03-16
  • 打赏
  • 举报
回复
declare @sql nvarchar(4000),@b int
set @sql=N'...'
exec sp_executesql @sql,N'@b int output',@b output
dawugui 2009-03-16
  • 打赏
  • 举报
回复
declare @num int,@sql nvarchar(3000),@CourseID nvarchar(30),@a float(30),@CoursePeriod nvarchar(8),@SubjectID nvarchar(30)
set @num=1
set @SubjectID='S09030004'
set @sql='select top 1 CoursePeriod from OLTR_StudySubjectRCourse
where SubjectID='''+@SubjectID+''' and SSRCoID not in (select top '+cast(@num as varchar)+' SSRCoID from OLTR_StudySubjectRCourse order by SSRCoID asc)
order by SSRCoID asc'
exec sp_executesql @sql,@CoursePeriod output


ntwqy_2008 2009-03-16
  • 打赏
  • 举报
回复

declare @num int,@sql nvarchar(3000),@CourseID nvarchar(30),@a float(30),@CoursePeriod nvarchar(8),@SubjectID nvarchar(30)
set @num=1
set @SubjectID='S09030004'
set @sql=N'select CourseID from OLTR_StudySubjectRCourse where SubjectID='''+@SubjectID+''''
exec sp_executesql @sql
exec exec (@sql)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``sql

jy00251278 2009-03-16
  • 打赏
  • 举报
回复
直接
select top 1 CourseID from OLTR_StudySubjectRCourse 
where SubjectID='S09030004'
and SSRCoID not in (select top 0 SSRCoID from OLTR_StudySubjectRCourse order by SSRCoID asc)
order by SSRCoID asc

是有值的
jy00251278 2009-03-16
  • 打赏
  • 举报
回复

declare @num int,@sql nvarchar(3000),@CourseID nvarchar(30),@a float(30),@CoursePeriod nvarchar(8),@SubjectID nvarchar(30)
set @num=1
set @SubjectID='S09030004'
set @sql='select top 1 CoursePeriod from OLTR_StudySubjectRCourse
where SubjectID='+@SubjectID+' and SSRCoID not in (select top '+cast(@num as varchar)+' SSRCoID from OLTR_StudySubjectRCourse order by SSRCoID asc)
order by SSRCoID asc'
exec sp_executesql @sql,@CoursePeriod output

总提示我
列名 'S09030004' 无效。是什么原因
zzxap 2009-03-16
  • 打赏
  • 举报
回复
declare @sql nvarchar(4000),@b int
set @sql=N'...'
exec sp_executesql @sql,N'@b int output',@b output

ChinaJiaBing 2009-03-16
  • 打赏
  • 举报
回复

有自动增长的列先这样.
set identity_insert 表名 on
...插入语句.
set identity_insert 表名 off

34,587

社区成员

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

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