CREATE procedure sp_GetRoomNum(
@Status int output,
@Errmsg VARCHAR(255) output,
@HouseNum varchar(10),
@RoomNum varchar(10)
)
AS SET NOCOUNT ON DECLARE @TmpSQL VARCHAR(2000)
SET @Status=0
SET @Errmsg=''
SET @TmpSQL='select 房号 from ['+@HouseNum+'] where 房号 ='''+@RoomNum+''''
EXECUTE(@TmpSQL)
PRINT @TmpSQL If @@ROWCOUNT<>0 Begin
Set @Status=-2
SET @Errmsg='Room existed!'
END IF @@Error<>0 BEGIN
SET @Status=-1
SET @ErrMsg='数据库异常错误,请稍后再试'
ENDGO
这一段是我的sqlserver存储过程,在sqlserver里面执行通过
这是通过后的消息代码
select 房号 from [A] where 房号 ='A101'
存储过程: XQ.dbo.sp_GetRoomNum
返回代码 = 0
输出参数:
@Status = 0
@Errmsg =
下面这一段是我在delphi里面调用他的代码
但是一执行程序就提示 对象名'A101'无效 这个A101就是Edit6.text的值 哪位大哥可以帮我一下
看看是怎么回事
begin
ASQL:='Execute sp_GetRoomNum :@status output,:@ErrMsg output,:@RoomNum,:@HouseNum';
with bcADOQuery do
begin
sql.Clear;
sql.Add(ASQL);
parameters.ParamValues['@RoomNum']:=Edit6.Text;
parameters.ParamValues['@HouseNum']:=Edit5.Text;
open;
if FieldValues['@status'] = -2 then
begin
Messagedlg('房号<'+Edit6.Text+'>已有住户',mterror,[mbok],0);
Exit;
end
else
@Status int output,
@Errmsg VARCHAR(255) output,
@HouseNum varchar(10),
@RoomNum varchar(10)
)
AS SET NOCOUNT ON DECLARE @TmpSQL VARCHAR(2000)
SET @Status=0
SET @Errmsg=''
SET @TmpSQL='select 房号 from ['+@HouseNum+'] where 房号 ='''+@RoomNum+''''
EXECUTE(@TmpSQL)
PRINT @TmpSQL If @@ROWCOUNT<>0 Begin
Set @Status=-2
SET @Errmsg='Room existed!'
END IF @@Error<>0 BEGIN
SET @Status=-1
SET @ErrMsg='数据库异常错误,请稍后再试'
ENDGO
这一段是我的sqlserver存储过程,在sqlserver里面执行通过
这是通过后的消息代码
select 房号 from [A] where 房号 ='A101'
存储过程: XQ.dbo.sp_GetRoomNum
返回代码 = 0
输出参数:
@Status = 0
@Errmsg =
下面这一段是我在delphi里面调用他的代码
但是一执行程序就提示 对象名'A101'无效 这个A101就是Edit6.text的值 哪位大哥可以帮我一下
看看是怎么回事
begin
ASQL:='Execute sp_GetRoomNum :@status output,:@ErrMsg output,:@RoomNum,:@HouseNum';
with bcADOQuery do
begin
sql.Clear;
sql.Add(ASQL);
parameters.ParamValues['@RoomNum']:=Edit6.Text;
parameters.ParamValues['@HouseNum']:=Edit5.Text;
open;
if FieldValues['@status'] = -2 then
begin
Messagedlg('房号<'+Edit6.Text+'>已有住户',mterror,[mbok],0);
Exit;
end
else
parameters.ParamValues['@RoomNum']:=Edit6.Text;
parameters.ParamValues['@HouseNum']:=Edit5.Text;
@Status int output,
@Errmsg VARCHAR(255) output,
@HouseNum varchar(10),
@RoomNum varchar(10)
)
AS你看上面 我定义了阿
@HouseNum varchar(10),@RoomNum varchar(10)而你程序里面定义的顺序是
:@RoomNum,:@HouseNum结果你中心SQL 语句的时候变成了select 房号 from [A101] where 房号 ='A'
没有表A101当然就出错了,参数与存储过程里没对上,当然出错了,换了就好了。
parameters.ParamValues['@RoomNum']:=Edit5.Text;
parameters.ParamValues['@HouseNum']:=Edit6.Text;
@Errmsg VARCHAR(255) output,
这两个是返回的阿 为什么你说没有返回集阿?
if parameters.ParamValues['@status'] = -2 then