读书人

PB10通OLEDB用SQLSERVER存程

发布时间: 2012-03-06 20:47:55 作者: rapoo

求助:PB10通OLEDB用SQLSERVER存程 fetch into出。急!
1、SQL SERVER存程如下:
CREATE PROCEDURE [dbo].[Pro_ApplyFrom_FetchERP] (
@typeNovarchar(12),
@updTypechar(1),
@xmlDatanvarchar(4000),
@userNamenvarchar(20) = '工入',
@applyNovarchar(50) output,
@reContentnvarchar(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

[解决办法]
以下为某例,请参考:

SQL code
声明存储过程  

  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 ;

读书人网 >PB

热点推荐