我用PB9連接在sybase里已經建好的帶回傳值的存盤程序,然后就出現錯誤代碼:
“space must be allocated for bind parameter”
這是怎么回事呢??
我的PB代碼如下:
DECLARE add_account PROCEDURE FOR sp_add_account
@acc_email =:acc_email,
@acc_password = :acc_password,
@acc_type = :acc_type,
@err1out =:err1 output,
@err2out =:err2 output,
@succout =:succ output
using SQLCA;
EXECUTE add_account;
if SQLCA.SQLCode=0 then
FETCH add_account INTO :err1,:err2,:succ;
if err1="" and err2="" then
MessageBox("success",succ)
elseif err2="" and succ="" then
MessageBox("error",err1)
elseif err1="" and succ="" then
MessageBox("error",err2)
end if
close add_account;
open(register)
else
is_msg=SQLCA.sqlErrText
MessageBox("Execute failed",string(SQLCA.sqlcode)+is_msg)
return
end if
end if
Sybase存盤程序:
create proc sp_add_account
(@acc_email varchar(80), @acc_password varchar(10),@acc_type varchar(80),@err1out varchar(80) out,@err2out varchar(80) out,@succout varchar(80) out,)
as
begin
/*check if this email address has existed */
if exists(select 1 from account where lower(acc_email)=lower(@acc_email))
begin
set @err1out= 'This account has existed'
return
end
/* check if the type is valid */
if (lower(@acc_type)<>'admin' or lower(@acc_type)<>'customer')
begin
set @err2out='not a valid account type'
return
end
else
begin transaction
insert into account
values
(lower(@acc_email), @acc_password,@acc_type)
set @succout= 'add a new account'
commit
end
if @@error<> 0
begin
rollback transaction
end
查了很多,但是沒大有解決辦法~~
我是PB菜鳥,跪求大神指導啊。。
uj5u.com熱心網友回復:
腫么木有人理我。。。uj5u.com熱心網友回復:
DECLARE add_account PROCEDURE FOR sp_add_account@acc_email =:acc_email,
@acc_password = :acc_password,
@acc_type = :acc_type,
@err1out =:err1 output,
@err2out =:err2 output,
@succout =:succ output
using SQLCA;
改成以下試試
DECLARE add_account PROCEDURE FOR sp_add_account
@acc_email =:acc_email,
@acc_password = :acc_password,
@acc_type = :acc_type
using SQLCA;
uj5u.com熱心網友回復:
或者EXECUTE add_account;
之前把三個輸入引數都賦上值,有可能引數為空引起的
uj5u.com熱心網友回復:
我們是這樣調用的ldt_today=wi_nvo_server.uf_servertime()
sqlca.autocommit = true
declare report_gethours procedure for dbo.report_gethours_sp @sdate=:indate,@edate=:ldt_today,@hours=:li_hours output using sqlca;
execute report_gethours;
fetch report_gethours into :li_hours;
close report_gethours;
sqlca.autocommit = false
你增加紅色字體的代碼試試
uj5u.com熱心網友回復:
我剛才試了,但是又報錯說“parameter err1out is expected”
uj5u.com熱心網友回復:
試了,不行哦~~
uj5u.com熱心網友回復:
你傳的參數有是null值的嗎?你換成空字串試試uj5u.com熱心網友回復:
null值我用“”(空字串)表示的,可是還是不行哦~~
uj5u.com熱心網友回復:
大俠們,快來幫幫我吧,做畢業設計中,急用~謝謝你們~uj5u.com熱心網友回復:
參考一下這個貼子http://bbs.csdn.net/topics/60166517
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/62196.html
標籤:數據庫相關
上一篇:RegistryGet 取注冊表的reg_binary資料,如何轉換為string
下一篇:PB 生成二維碼
