一个参数类型不明白的地方,求教,写

put2001_ruan 2003-10-25 02:43:06
CREATE procedure up_good
@good_test char(25),@bad_test char(25),@aa datetime
as
--pub_id
declare @aaa char(1000)
set @aaa='select *,sdate=cast('''+CONVERT(varchar(10),@aa,120)+''' as datetime) into good from titles where pub_id >='''+@good_test +''' and pub_id<='''+@bad_test+''''
exec (@aaa)
GO

exec up_good '0700','1300','1991/1/1'

我想不明白,为什么你要把@aa先转变为varchar(10),再把他转变成datetime,@aa原本就是datetime类型了。
...全文
34 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-10-25
  • 打赏
  • 举报
回复
对了
put2001_ruan 2003-10-25
  • 打赏
  • 举报
回复

你的意思是不是说只要我一段存储过程中写select ............语句时,假如要执行该语句的时候,不用exec ***来执行,存储过程就自动能执行该语句啊???
txlicenhe 2003-10-25
  • 打赏
  • 举报
回复
你的例子是用动态SQL语句,其实本例你完全没有必要用动态SQL语句啊。
CREATE procedure up_good
@good_test char(25),@bad_test char(25),@aa datetime
as
select titles.*,sdate=@aa into good from titles
where pub_id >= @good_test and pub_id<= @bad_test

GO
put2001_ruan 2003-10-25
  • 打赏
  • 举报
回复
declare @aaa char(1000)
set @aaa='select *,sdate=cast('''+CONVERT(varchar(10),@aa,120)+''' as datetime) into good from titles where pub_id >='''+@good_test +''' and pub_id<='''+@bad_test+''''

1: @aaa是字符串相加,每一部分都应该是字符或字符串
2: 因为你的sdate要求为日期型

那有没有比这个更加简洁美观的写法啊??
put2001_ruan 2003-10-25
  • 打赏
  • 举报
回复
照你这么说,我输入的参数假如要引用到查询条件中去的话,就必须用你上面的这种方法吗??有没有其他的方法啊???我想把那句话分开来写可以不??
txlicenhe 2003-10-25
  • 打赏
  • 举报
回复
declare @aaa char(1000)
set @aaa='select *,sdate=cast('''+CONVERT(varchar(10),@aa,120)+''' as datetime) into good from titles where pub_id >='''+@good_test +''' and pub_id<='''+@bad_test+''''

1: @aaa是字符串相加,每一部分都应该是字符或字符串
2: 因为你的sdate要求为日期型
put2001_ruan 2003-10-25
  • 打赏
  • 举报
回复
to:letsflytogether(恨!不能拥有天下所有的财富,然后平分)
什么意思??能不能稍微讲明白点,或者能不能给小弟一些资料??我对参数传递这一块很模糊!万分感谢
伍子V5 2003-10-25
  • 打赏
  • 举报
回复
因为你那是字符串相加
put2001_ruan 2003-10-25
  • 打赏
  • 举报
回复
CREATE procedure up_good
@good_test char(25),@bad_test char(25),@aa datetime
as
--pub_id
declare @aaa char(1000)
-- set @aa=convert(datetime,@aa)
set @aaa='select titles.*,sdate=@aa into good from titles where pub_id >='+char(39)+@good_test +char(39)+'and pub_id<='+char(39)+@bad_test+char(39)
exec (@aaa)
GO
exec up_good '0700','1300','1991/1/1'
这么写就出现错误!我感觉跟上面的一段是一模一样的啊!

34,874

社区成员

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

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