求助:PB10通過OLEDB調用SQLSERVER存儲過程 fetch into時出錯。急!

longdrang 2009-11-09 10:24:58
1、SQL SERVER存儲過程如下:
CREATE PROCEDURE [dbo].[Pro_ApplyFrom_FetchERP] (
@typeNo varchar(12),
@updType char(1),
@xmlData nvarchar(4000),
@userName nvarchar(20) = '工廠轉入',
@applyNo varchar(50) output,
@reContent nvarchar(1000) output
)
AS
if @@trancount > 0
save tran Pro_ApplyFrom_FetchERP

begin tran Pro_ApplyFrom_FetchERP
if @typeNo = 'A'
begin
exec Pro_ApplyFrom_FetchERP_finish @updType,@xmlData,@userName,@applyNo output,@reContent output
end
if @@error > 0
goto Error_Handle

set nocount off
commit tran
return 0
Error_Handle:
set nocount off
rollback tran Pro_ApplyFrom_FetchERP
return 1

2、PB調用代碼如下:
declare Pro_ApplyFrom_FetchERP procedure for
@RC = dbo.Pro_ApplyFrom_FetchERP
@typeNo = 'A',
@updType = :as_updtype,
@xmlData = :ls_xml,
@userName = :ls_upd_user,
@applyNo = :ls_web_af_no output,
@reContent = :ls_rtn output
using ata_sqlserver;

execute Pro_ApplyFrom_FetchERP;

if ata_sqlserver.sqlcode = 0 then
fetch Pro_ApplyFrom_FetchERP into :li_rtn,:ls_web_af_no,:ls_rtn;

if ata_sqlserver.sqlcode < 0 then
messagebox("sql server fetch error",ata_sqlserver.sqlerrtext)
return -1
end if
else
messagebox('將送貨單資料轉至物品攜出單系統時出錯:' + string(ata_sqlserver.sqlcode),ata_sqlserver.sqlerrtext)
return -1
end if

close Pro_ApplyFrom_FetchERP;

3、問題:當PB代碼執行到FETCH INTO出錯提示:Mismatch between retreive columns and fetch columns
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
longdrang 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
Mismatch between retreive columns and fetch columns

"列"不匹配,检查你那些变量顺序或类型是不是搞错了?
[/Quote]

dawugui,您好!我有檢查過變量類型。在發貼前也有參考過您所舉之例証。
請看我所寫出的存儲過程中隻有三個值是用於返回的。
一個是存儲過程的返回值,為數字型態。另兩個為字符型態的傳出參數。
故我的fetch into語句為:fetch Pro_ApplyFrom_FetchERP into :li_rtn,:ls_web_af_no,:ls_rtn;
其中li_rtn為int ,ls_web_af_no,ls_rtn為string。

可否請幫忙再仔細看下我所列舉的內容。

多謝!
dawugui 2009-11-09
  • 打赏
  • 举报
回复
以下为某例,请参考:

声明存储过程 

  CREATE PROCEDURE sp_results_demo @InParmInt Int,@OutParmInt OUTPUT

  AS

  BEGIN

  SELECT 1,2,3,4

  SELECT uid,id

  FROM sysobjects

  WHERE type='U'

  SELECT @OutParmInt=69

  Return 16

  END

  用于返回每个返回值时用PowerScrip如下:

  Long lReturn,lPram1,lPram2,lResult1,lResult2,lResult3,lResult4,lResult5,lResult6

  DECLARE results_demo PROCEDURE FOR

  @returnValue=sp_results_demo

  @InParmInt = :lPram1,

  @OutParmInt = :lPram2 OUTPUT using sqlca;

  execute results_demo;

  Do While SQLCA.SQLCode=0

   Fetch results_demo INTO :lResult1,:lResult2,:lResult3,:lResult4 ;

  Loop

  Fetch results_demo INTO :lResult5,:lResult6 ;

  Do While sqlca.sqlcode=0

   Fetch results_demo Into :lResult5,:lResult6;

  Loop

  Fetch results_demo Into :lReturn,:lPram2;

  Close results_demo ;
dawugui 2009-11-09
  • 打赏
  • 举报
回复
Mismatch between retreive columns and fetch columns

"列"不匹配,检查你那些变量顺序或类型是不是搞错了?

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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