程序: SQL SERVER 2000
內容:
CREATE PROCEDURE dbo.p_XS_jzgl
@users varchar(8000),
@cw_zs int OUTPUT
as
SET NOCOUNT ON
declare @m int, @n int, @user varchar(4000),@tag1 varchar(2),@tag2 varchar(2),@tg1 int,@tg2 int ,@bls int ,@cw_bj varchar(200),@cw_s int
set @tag2 ='○'
set @tag1 ='●'
set @m = charindex(@tag1,@users)
set @n = 1
set @tg1=0
set @bls = 21
set @cw_bj =''
set @cw_s=0
while(@m > 0)
begin
set @user=substring(@users,@n,@m-@n)
set @n = @m + 1
set @m = charindex(@tag1,@users,@n)
declare @k int ,@j int ,@use varchar(50)
set @k = charindex(@tag2,@user)
set @j = 1
set @tg2 = 0
while(@k>0)
begin
declare @p_djbh varchar(12),@p_czrq varchar(10),@p_splb varchar(10),@p_spbh varchar(11),@p_spmc varchar(40),@p_ckmc varchar(20),@p_jzfs varchar(10),@p_hykh varchar(15),@p_ygbh varchar(8),@p_beiz varchar(50),@p_czsj datetime
declare @p_sl decimal(9,1),@p_xsdj decimal(9,1),@p_xszk decimal(9,1),@p_xsje decimal(9,1),@p_xtdj decimal(9,1),@p_xtzk decimal(9,1),@p_xtje decimal(9,1),@p_jhdj decimal(9,1),@p_jhje decimal(9,1),@p_lrje decimal(9,1)
declare @p_sfjk varchar(1)
set @use=substring(@user,@j,@k-@j)
set @j = @k + 1
set @k = charindex(@tag2,@user,@j)
set @tg2 = @tg2 + 1
if( @tg2= 1)
begin
set @p_djbh = ltrim( rtrim(@use))
end
if( @tg2= 2)
begin
set @p_czrq =ltrim( rtrim(@use))
end
if( @tg2= 3)
begin
set @p_splb =ltrim( rtrim(@use))
end
if( @tg2= 4)
begin
set @p_spbh =ltrim( rtrim(@use))
end
if( @tg2= 5)
begin
set @p_spmc =ltrim( rtrim(@use))
end
if( @tg2= 6)
begin
set @p_ckmc =ltrim( rtrim(@use))
end
if( @tg2= 7)
begin
set @p_jzfs =ltrim( rtrim(@use))
end
if( @tg2= 8)
begin
set @p_hykh =ltrim( rtrim(@use))
end
if( @tg2= 9)
begin
set @p_ygbh =ltrim( rtrim(@use))
end
if( @tg2= 10)
begin
set @p_beiz =ltrim( rtrim(@use))
end
if( @tg2= 11)
begin
set @p_sl =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 12)
begin
set @p_xsdj = CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 13)
begin
set @p_xszk =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 14)
begin
set @p_xsje =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 15)
begin
set @p_xtdj =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 16)
begin
set @p_xtzk =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 17)
begin
set @p_xtje =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 18)
begin
set @p_jhdj =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 19)
begin
set @p_jhje =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 20)
begin
set @p_lrje =CONVERT (decimal(9,1),ltrim( rtrim(@use)))
end
if( @tg2= 21)
begin
set @p_czsj =CONVERT (datetime,ltrim( rtrim(@use)),20)
end
print @use
end
if( @tg2 = @bls )
begin
-------------------------------這里開始處理資料----------------------------------
insert t_yyhzb(單據編號,操作日期,操作時間,倉庫名稱,商品類別,商品編號,商品名稱,數量,銷售單價,銷售折扣,銷售金額,進貨單價,進貨金額,退貨單價,退貨折扣,退貨金額,利潤金額,員工編號,結帳方式,會員卡號,備注)
values(@p_djbh,@p_czrq,@p_czsj,@p_ckmc,@p_splb,@p_spbh,@p_spmc,@p_sl,@p_xsdj,@p_xszk,@p_xsje,@p_jhdj,@p_jhje,@p_xtdj,@p_xtzk,@p_xtje,@p_lrje,@p_ygbh,@p_jzfs,@p_hykh,@p_beiz )
COMMIT
SELECT @p_sfjk = 是否進庫 from t_splb where 商品類別編號 = @p_splb
if (@p_sfjk ='1' )
begin
----------------------------------------庫存總量與單價游標--------------------------------
---------------------------------------------------結束-------------------------------------------------
if (left(@p_djbh,2) = 'XS')
begin
INSERT INTO t_cangkumx(倉庫,商品編號,商品名稱,規格,單位,操作日期,操作時間,單據編號,摘要,收入數量,收入單價,收入金額,發出數量,發出單價,發出金額,結余數量,結余金額,銷售單價,銷售金額,商品售價,折扣,備注 )
values (@p_ckmc,@p_spbh,@p_spmc,'','',@p_czrq,@p_czsj,@p_djbh,'銷售',0,0,0,@p_sl,@p_jhdj,@p_jhje,0,0,@p_xsdj,@p_xsje,@p_xsdj,10,@p_beiz )
COMMIT
-----------------應加死鎖或超時判斷-----------------------------------
--------- print '銷售倉庫處理'
end
else
begin
INSERT INTO t_cangkumx(倉庫,商品編號,商品名稱,規格,單位,操作日期,操作時間,單據編號,摘要,收入數量,收入單價,收入金額,發出數量,發出單價,發出金額,結余數量,結余金額,銷售單價,銷售金額,商品售價,折扣,備注 )
values (@p_ckmc,@p_spbh,@p_spmc,'','',@p_czrq,@p_czsj,@p_djbh,'銷售',@p_sl,@p_jhdj,@p_jhje,0,0,0,0,0,@p_xsdj,@p_xsje,@p_xsdj,10,@p_beiz )
COMMIT
-----------------應加死鎖或超時判斷-----------------------------------
end
end
------------------------------------處理資料結束-------------------------------------
end
else
begin
set @cw_bj ='第' + cast(@tg2 as varchar(20)) + '個欄位發生錯誤!'
set @cw_s = @cw_s + 1
end
set @tg1=@tg1 + 1
end
SET NOCOUNT OFF
if(@tg1 >0)
begin
set @cw_zs = 9
end
GO
呼叫:
-------------------發送資料----------------
int cw_zs
string cw_bjz
//
//
DECLARE user_jzgl PROCEDURE FOR p_xs_jzgl
@users = :p_ljstr,@cw_zs = :cw_zs OUTPUT;
//@users = :p_ljstr, @rcs = :ls_rcs ,@userjf = :t_hykh ,@userjfs = :m_bcjf,@userdj = :p_djljstr,@userkj = :p_kjljstr, @kjrcs = :kj_jls ,@cw_zs = :cw_zs OUTPUT,@cw_bjz = :cw_bjz OUTPUT;
EXECUTE user_jzgl ;
FETCH user_jzgl into :cw_zs;
CLOSE user_jzgl;
messagebox(string(cw_zs),cw_bjz)
COMMIT using sqlca;
if cw_zs = 9 then
.....
else
....
end if
問題 cw_zs 不回傳程序中的9 而總是0
uj5u.com熱心網友回復:
把FETCH user_jzgl into :cw_zs;
注釋掉試一下。
uj5u.com熱心網友回復:
不好用的! 不是那個問題吧 我才試了還是0uj5u.com熱心網友回復:
連接資料庫時,SQLCA.DBParm中增加PBNewSPInvocation='Yes'SQLCA.DBParm="PBNewSPInvocation='Yes',...其他的"
uj5u.com熱心網友回復:
?這個問題沒見過呢~~uj5u.com熱心網友回復:
The PBNewSPInvocation DBParm enables you to use the OUTPUT or OUT keywords when you invoke a stored procedure using the ODBC interface. The behavior of the PowerBuilder ODBC driver when this DBParm is set is consistent with the default behavior of the OLE DB and JDBC drivers.The DBParm can be set dynamically at runtime after connecting to a database. You can also set it in your PBODB80.INI file if you want to create and retrieve data into a DataWindow with a stored procedure data source in the DataWindow painter. The DBParm has no effect when you use RPC to invoke a stored procedure.
When this DBParm is not set, output parameters might not be returned when you use an embedded SQL command to call a stored procedure. When PBNewSPInvocation is set to “Yes,” you can use a statement like the following to obtain the value of the stored procedure's output parameter:
DECLARE sp_test PROCEDURE FOR SP1 VAR0=:ARGIN, VAR1=:ARGOUT OUTPUT USING SQLCA;
If the stored procedure contains result sets, you must fetch the result sets first. If the stored procedure has a return value and you want to obtain it, use the format RC = SP1:
DECLARE sp_test PROCEDURE FOR RC=SP1 VAR0=:ARGIN, VAR1=:ARGOUT OUTPUT USING SQLCA;
When PBNewSPInvocation is set to “Yes,” the values of the PBUseProcOwner and CallEscape DBParms are ignored.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/78017.html
標籤:數據庫相關
