declare @no char(6),@num smallint,@name char(20),@price money,@amount int
declare store_cursor cursor for
select* from store.订购单明细 order by 单价 asc
open store_cursor
print'订购单号 序号 产品名称 单价 数量'
fetch from store_cursor into @no,@num,@name,@price,@amount
while @@FETCH_STATUS=0
begin
print @[email protected][email protected][email protected][email protected]
fetch from store_cursor into @no,@num,@name,@price,@amount
end
close store_cursor
deallocate store_cursor
运行时老是提示 在将 varchar 值 'OR3111' 转换成数据类型 smallint 时失败,'OR3111'是订购单号,这些变量的类型是我在表里面定义的,如果把数据类型全改成char的话,只能出来三列 订购单号 序号 单价 ,这是为什么啊~~!!
------解决方案--------------------
- SQL code
select* from store===>查询出的字段能和你游标变量接收的顺序一样么.....建议写select 具体字段 最好别用*
------解决方案--------------------
- SQL code
print @[email protected][email protected][email protected][email protected]--你这个整体是个字符串类型的。但是里面有 @num 为smallint.还有后面的 @price,@amount 如果不转换也会报错。 SQL 自己没有做隐形转换。需要你自己做个转换print @no+convert(varchar(12),@num)[email protected]+convert(varchar(12),@price)+convert(varchar(12),@amount)
------解决方案--------------------
- SQL code
--还有你的 char 类型如果对于的列值不够你这里定义的长度 ,后面会有对于的空格(系统自动添加补足)补足的。可能会得不到你想要的结果。建议用 varchar类型