您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
-->
当前位置:首页 >> 编程问答 >> MSSQL >> Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同

Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同

来源:网络整理     时间:2017/11/30 12:32:11     关键词:

关于网友提出的“ Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同”问题疑问,本网通过在网上对“ Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同
描述:

create proc p_contact
as
declare @fcmn varchar(100)
declare @dbid varchar(200)
declare @fan varchar(200)
declare @sql varchar(2000)
Declare Table_contact cursor for --定义游标
select cpname,AccountName from T_unit_account
open table_contact--打开游标
fetch next from Table_contact into @fcmn,@fan,@DBID-- 匹配第一条记录
while (@@FETCH_STATUS=0)-- 读取游标状态,循环
begin
set @sql ='insert into datacollection.dbo.t_rp_contact
(FID,FPeriod,FRP,FType,FDate,FFincDate,
FNumber,FCustomer,FDepartment,FEmployee,FCurrencyID,FExchangeRate,FAmount,FAmountFor
,FRemainAmount,FRemainAmountFor,FContractNo,FInvoiceID,FRPBillID,FBillID,FBegID,
FExpenseID,FBussinessDiscount,FCashDiscount,FRPDate,FSuperDays,FDirectSale,FSaleBackAmount,
FSaleBackAmountFor,FDue,FIsBad,FBadReason,FVoucherID,FGroupID,FAccountID,FIsInit,
FStatus,FPost,FToBal,FPre,FK3Import,FInterestRate,FCheckType,FBillType,FInvoiceType,
FItemClassID,FExplanation,FSmInvID,FPreparer,UUID,FCompanyName,Faccountname)
select
FID,FPeriod,FRP,FType,FDate,FFincDate,
FNumber,FCustomer,FDepartment,FEmployee,FCurrencyID,FExchangeRate,FAmount,FAmountFor
,FRemainAmount,FRemainAmountFor,FContractNo,FInvoiceID,FRPBillID,FBillID,FBegID,
FExpenseID,FBussinessDiscount,FCashDiscount,FRPDate,FSuperDays,FDirectSale,FSaleBackAmount,
FSaleBackAmountFor,FDue,FIsBad,FBadReason,FVoucherID,FGroupID,FAccountID,FIsInit,
FStatus,FPost,FToBal,FPre,FK3Import,FInterestRate,FCheckType,FBillType,FInvoiceType,
FItemClassID,FExplanation,FSmInvID,FPreparer,UUID,'''+@fcmn+''','''+@fan+'''
from '+@dbid+'.dbo.t_rp_contact trpc
where not exists(select 1 from datacollection.dbo.t_rp_contact trp where trp.FCompanyName='''+@fcmn+''',trp.Faccountname='''+@fcmn+''' and trp.FID=trpc.FID)'
exec(@sql)
fetch next from Table_contact into @fcmn,@fan,@dbid
end
报错
Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同


解决方案1:

select cpname,AccountName from T_unit_account你游标里就2个返回字段,你定义了3个变量循环? Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同

解决方案2:

引用 2 楼 sinat_28984567 的回复:
SELECT  cpname ,   --这里读取了两条
        AccountName
FROM    T_unit_account
OPEN table_contact
FETCH NEXT FROM Table_contact INTO @fcmn, @fan, @DBID-- 这里是三个变量

版主正解,很简单的道理,你有两个东西,我现在命令你把它俩放到三个篮子里,那是不是就一定有一个篮子是空的(也就是报错)。就好比你的 cpname ,AccountName放到@fcmn, @fan, @DBID里面一样的道理

解决方案3:

引用 2楼二月十六 的回复:
SELECT  cpname ,   --这里读取了两条
        AccountName
FROM    T_unit_account
OPEN table_contact
FETCH NEXT FROM Table_contact INTO @fcmn, @fan, @DBID-- 这里是三个变量
两条=>两个字段

解决方案4:

SELECT  cpname ,   --这里读取了两条
        AccountName
FROM    T_unit_account
OPEN table_contact
FETCH NEXT FROM Table_contact INTO @fcmn, @fan, @DBID-- 这里是三个变量


以上介绍了“ Cursorfetch: INTO 列表中声明的变量数目必须与所选列的数目相同”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4512073.html

相关图片

相关文章