存储过程中调用另外的存储过程的问题

Mjolar 2012-01-03 09:16:28

create proc function_search_free
@train_no char(5),@date date,@start_station varchar(50),@end_station varchar(50),@seat_free_num int output
as
declare @start_time time(0),@arrive_time time(0)
exec function_search_free2 '@train_no','@date','@start_station','@end_station',@start_time out,@arrive_time out
select @seat_free_num=(select count(*)
from view_buy_info b
where train_no=@train_no and train_date=@date and ((@start_time between start_time and arrive_time) or (@arrive_time between start_time and arrive_time))
)

create proc function_search_free2
@train_no char(5),@date date,@start_station varchar(50),@end_station varchar(50),@start_time time(0) output,@end_time time(0) output
as
select @start_time=start_time,@end_time=arrive_time
from view_buy_info
where Train_no=@train_no and @start_station=Startstation_name and @end_station=Endstation_name and @date=train_date

各位大大,我现在创建了两个存储过程,期间有存储过程的调用,然后现在我执行

declare @sum int
exec function_search_free 'G0001','2012-01-01','上海','苏州',@sum out
print @sum

结果显示:消息 8114,级别 16,状态 1,过程 function_search_free2,第 0 行
从数据类型 varchar 转换为 date 时出错。

看了很久不明白啊、我哪里有varchar向date的转化?
难道说存储过程调用的时候默认是把所有的参数转化为varchar吗?

希望各位帮忙解答!
...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mjolar 2012-01-04
  • 打赏
  • 举报
回复
感谢两位的解答!问题已经解决!
叶子 2012-01-03
  • 打赏
  • 举报
回复

exec function_search_free2 '@train_no','@date','@start_station','@end_station',@start_time out,@arrive_time out

这个位置有问题 你把@date加上引号,变成 '@date' 字符串了。
AcHerat 元老 2012-01-03
  • 打赏
  • 举报
回复
exec function_search_free2 '@train_no','@date'...

这里,不要加引号,变量直接用

exec function_search_free2 @train_no,@date...
AcHerat 元老 2012-01-03
  • 打赏
  • 举报
回复
@date date把date改为datetime试试!

34,576

社区成员

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

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