PROCEDURE的返回值为什么是''!(20分)

B

boye

Unregistered / Unconfirmed
GUEST, unregistred user!
SQLSERER2000中文版:
CREATE PROCEDURE pp @p1 char, @p2 char output
AS
set @P2=@@p1
GO
DELPHI 6:
begin
ADOStoreProc1.Parameters.ParamByName('@p2').Value:='';
ADOStoreProc1.Parameters.ParamByName('@p1').Value:='张三丰';
ADOStoredProc1.ExecProc;
end;
question:ADOStoreProc1.Parameters.ParamByName('@p2').Value 返回值为'';
'张三丰'换成'12345' 返回值为'1';
[red]why![/red]
请各位大虾指点,小弟不胜感激之至!
 
SQLSERER2000中文版:
CREATE PROCEDURE pp @p1 char, @p2 char output
AS
set @P2=@@p1
???:
select @P2=@@p1

GO
 
@p1怎么就成了系统变量@@p1 sql提示@@P1未声明!
直接 SET @p2:='张三丰' 返回值为'张'!到底怎么回事!
存储过程只是测试返回值,没有别的语句.
另外据说'',""都可以用,为什么用""就出错
如:select * from 档案 where 姓名="张三" 就报错,必须是'张三'才行!
 
not use only char,user nvarchar(30)
declare @p1 nvarchar(30)
 
你没有指定char的长度,系统会默认是char(1),呵呵。
'张三'是中文字,中文是全角的,所以你char(1)是半个中文,
你能看出来是什么吗,当然不能。
为什么'1234'可以呢,因为是数字,半角的,这回你明白了吧。呵呵
 
能不能用""
delphi设''太麻烦了:''''='!
 
可以,但兼容性不好,
跟SqlServer的设置有关,最好不要用
 
SET QUOTED_IDENTIFIER OFF 可以用"",但仅限于查询分析器中才能用,如视图就不能用,
怎样才能在Delphi中也能用呢!
 
多人接受答案了。
 
顶部