存储过程中varchar类型变量的长度问题,急!
CREATE PROCEDURE dbo.QueryRootIssues
@roomid numeric ,@begintime datetime, @endtime datetime, @parts int,@numptime int =200
AS
BEGIN
declare @tablename nvarchar(50)
declare @insertsql varchar (5000)
declare @rsql varchar (1000)
declare @beginnum int ,@endnum int
declare @sql varchar(5000)
SELECT @beginnum =(@parts-1)*@numptime+1
SELECT @endnum =@parts*@numptime
SELECT @tablename=IssueTable FROM Rooms WHERE RoomID=@roomid
Select @sql='create table #rootissues ('
Select @sql=@sql+' orderid numeric identity not null,'
Select @sql=@sql+' IssueID numeric null,'
Select @sql=@sql+' Topic nvarchar(100) null,'
Select @sql=@sql+' UserID numeric null,'
Select @sql=@sql+' NickName nvarchar(100) null,'
Select @sql=@sql+' Content text null,'
Select @sql=@sql+' PostDate datetime null,'
Select @sql=@sql+' RootID numeric null,'
Select @sql=@sql+' ParentID numeric null,'
Select @sql=@sql+' State bit default 1 not null)'
select @insertsql='Insert into #rootissues(IssueID, Topic, UserID, NickName, Content, PostDate, RootID, ParentID, State) '
select @insertsql=@insertsql+' Select IssueID, Topic, UserID, NickName, Content, PostDate, RootID, ParentID, State from '+@tablename
select @insertsql=@insertsql+' WHERE RootID=0 AND PostDate >= '''+convert( varchar,@begintime)+''' AND '
select @insertsql=@insertsql+'PostDate <='''+convert( varchar,@endtime)+''' ORDER BY PostDate DESC'
select @rsql='SELECT IssueID, Topic, UserID, NickName, Content, PostDate, RootID, ParentID, State FROM #rootissues WHERE orderid>= ' + convert(varchar,@beginnum) + ' AND orderid <= '+convert(varchar,@endnum) +' ORDER BY PostDate DESC '
exec @sql
exec @insertsql
exec @rsql
drop table #roorissues
END
存储过程如上:
将exec 改成print 后所生成的语句分别在外面执行是正确的
但执行存储过程时却却出现错误,说变量无法识别,消息太长
应该怎样处理?
问题点数:0、回复次数:4Top
1 楼rich_li(rick)回复于 2003-11-02 15:25:40 得分 0
sybase支持的varchar长度不能超过255Top
2 楼knightzhou(就像天上的浮云)回复于 2003-11-02 22:07:42 得分 0
问题解决了,原来是语法错误,
将
exec @sql
exec @insertsql
exec @rsql
改为 exec (@sql+' '+@insertsql+' '+@rsql )
就可以了Top
3 楼zanpen2003(雪落无声)回复于 2003-11-02 22:23:22 得分 0
我晕!varchar的变量类型长度只能为255?你查过资料吗?我没注意。不过我觉得,怎么着也应该比char长些吧?Top
4 楼sldshyh()回复于 2003-11-03 17:38:03 得分 0
11.0的版本最大长度才是255,12版本以上支持超过2000的varchar,与逻辑页面的设置有关。Top
相关问题
- 在PB中用存储过程存储数据,一个变量为varchar长度为2000,在调用存储过程的时候提示非法操作
- 存储过程OUT变量?
- ORACLE 9I 存储过程中的string类型变量最大长度为多少?有没有限制
- 存储过程变量问题
- 存储过程的变量的问题
- 存储过程中的变量问题
- 在存储过程中,如何把varchar类型的数据赋值给text类型的变量
- 关于存储过程的问题,关于传值的问题,一个varchar的变量,放在update 表名 set a=变量 where a_id in(varchar变量)会出错!
- 存储过程的输入变量和输出变量.
- 请问:delphi中,参数长度可否大于255个字节??我写的存储过程,里面一个参数,长度为varchar(1000)




