简单的存储过程,看看错在哪里呢?

shnaying1945 2012-03-23 01:37:56
ALTER PROCEDURE get_paper_id
@course varchar(30),
@year numeric(4,0),
@semester varchar(8),
@paper_name varchar(100)
AS
declare @sql nvarchar(100)
declare @id varchar(10)
begin
set @sql='select @id=id from paper where 课程='''+@course+'''
and 年份='''+@year+''' and 学期='''+@semester+''' and 试题='''+@paper_name+''''
exec sp_executesql @sql
end
RETURN @id
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shnaying1945 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
引用 3 楼 shnaying1945 的回复:
数据库里的年份是numeric(4,0)类型的呀,把它变varchar了,还能对应吗。况且我照你改的,也没能执行成功。我能保证能连接好数据库,且数据库中对应的表对应的属性都无误。


SQL code
ALTER PROCEDURE get_paper_id
@course varchar(30),
@year int,
@seme……
[/Quote]

改正是改正了,但是偶搞的是ASP.NET编程,执行不正常,要是不适用动态sql就没事。但上面所说的在server2008中就正常执行了,郁闷中。不过先感谢大师再说啊。
dawugui 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shnaying1945 的回复:]
数据库里的年份是numeric(4,0)类型的呀,把它变varchar了,还能对应吗。况且我照你改的,也没能执行成功。我能保证能连接好数据库,且数据库中对应的表对应的属性都无误。
[/Quote]
ALTER PROCEDURE get_paper_id
@course varchar(30),
@year int,
@semester varchar(8),
@paper_name varchar(100),
@id varchar(10) OUTPUT
AS
begin
declare @sql nvarchar(100)
set @sql='select @a = id from paper where 课程 = ''' + @course + ''' and 年份 = ''' + cast(@year as varchar) + ''' and 学期 = ''' + @semester + ''' and 试题 = ''' + @paper_name + ''''
exec sp_executesql @sql ,N'@a varchar(10) output' , @id output
end
shnaying1945 2012-03-23
  • 打赏
  • 举报
回复
数据库里的年份是numeric(4,0)类型的呀,把它变varchar了,还能对应吗。况且我照你改的,也没能执行成功。我能保证能连接好数据库,且数据库中对应的表对应的属性都无误。
EnForGrass 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 shnaying1945 的回复:]
ALTER PROCEDURE get_paper_id
@course varchar(30),
@year numeric(4,0),
@semester varchar(8),
@paper_name varchar(100)
AS
declare @sql nvarchar(100)
declare @id varchar(10)
begin
set @sql='sele……
[/Quote]


ALTER PROCEDURE get_paper_id
@course varchar(30),
@year numeric(4,0),
@semester varchar(8),
@paper_name varchar(100)
AS
declare @sql nvarchar(100)
SET @sql=''
declare @id varchar(10)
SET @id=''
begin
set @sql='select @id=id from paper where 课程='''+@course+'''
and 年份='''+CAST(@year AS VARCHAR(4))+''' and 学期='''+@semester+''' and 试题='''+@paper_name+''''
exec sp_executesql @sql
end
RETURN @id
  • 打赏
  • 举报
回复

ALTER PROCEDURE get_paper_id
@course varchar(30),
@year numeric(4,0),
@semester varchar(8),
@paper_name varchar(100)
AS
declare @sql nvarchar(100)
declare @id varchar(10)
set @sql=''
set @id=''
begin
set @sql='select @id=id from paper where 课程='''+@course+'''
and 年份='''+@year+''' and 学期='''+@semester+''' and 试题='''+@paper_name+''''
exec sp_executesql @sql
end
RETURN @id

34,590

社区成员

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

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