Sql server Sql server游标结果未正确显示?
请协助回答这个问题。为什么我的光标结果不显示正确的结果?看两张照片Sql server Sql server游标结果未正确显示?,sql-server,database-cursor,Sql Server,Database Cursor,请协助回答这个问题。为什么我的光标结果不显示正确的结果?看两张照片 declare @FullName varchar; declare @InvoiceID int; declare @CustomerID int; declare @DeliveryInstructions varchar; declare Salescur cursor for --select--- s
declare @FullName varchar;
declare @InvoiceID int;
declare @CustomerID int;
declare @DeliveryInstructions varchar;
declare Salescur cursor for
--select---
select p.FullName, InvoiceID,CustomerID,DeliveryInstructions
from Sales.Invoices s
inner join Application.People p
on s.SalespersonPersonID = p.PersonID
where InvoiceDate = '2016-05-31'
and s.SalespersonPersonID = 8;
open Salescur;
fetch next from Salescur into @FullName,@InvoiceID,@CustomerID,
@DeliveryInstructions;
while @@FETCH_STATUS = 0
begin
--print @InvoiceID + CHAR(13);
print @FullName + 'has delivery instructions to these addresses: ' + @DeliveryInstructions
fetch next from Salescur into @FullName,@InvoiceID,@CustomerID,
@DeliveryInstructions;
end
close Salescur;
deallocate Salescur;
end;
为什么要使用光标
,也可以通过concat()
函数来实现
select concat(p.FullName, ' has delivery instructions to these addresses: ', p.DeliveryInstructions)
from Sales.Invoices s
inner join Application.People p
on s.SalespersonPersonID = p.PersonID
where InvoiceDate = '2016-05-31' and
s.SalespersonPersonID = 8;
对于旧版本,您可以使用
select p.FullName + ' has delivery instructions to these addresses: ' + p.DeliveryInstructions
. . .
为什么要使用光标
,也可以通过concat()
函数来实现
select concat(p.FullName, ' has delivery instructions to these addresses: ', p.DeliveryInstructions)
from Sales.Invoices s
inner join Application.People p
on s.SalespersonPersonID = p.PersonID
where InvoiceDate = '2016-05-31' and
s.SalespersonPersonID = 8;
对于旧版本,您可以使用
select p.FullName + ' has delivery instructions to these addresses: ' + p.DeliveryInstructions
. . .
正如Jeroen所说,您已将变量声明为type
VARCHAR
,但尚未指定字段长度。这将导致长度为1
你需要做什么
DECLARE @FullName VARCHAR(50)
通过做
DECLARE @FullName VARCHAR
你在做什么
DECLARE @FullName VARCHAR(1)
这就是为什么您只获得第一个字符的原因,正如Jeroen所说,您已经将变量声明为type
VARCHAR
,但没有指定字段长度。这将导致长度为1
你需要做什么
DECLARE @FullName VARCHAR(50)
通过做
DECLARE @FullName VARCHAR
你在做什么
DECLARE @FullName VARCHAR(1)
这就是为什么您只获得第一个字符的原因,因为使用不带长度的
varchar
是一个非常重要的问题。@jeroemoster谢谢,是的!因为使用没有长度的varchar
是一个很好的选择,你应该踢它。@jeroenmoster谢谢,是的!谢谢大家!回答了我的问题!谢谢大家!回答了我的问题!大概是因为印刷品的使用,大概是因为印刷品的使用。