这个存储过程错在哪里

来源:百度知道 编辑:UC知道 时间:2024/06/19 08:47:09
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[sp_InsertRecord](
@ClientName nvarchar(50),@CPerson nvarchar(50),
@CTel nvarchar(50),@RLevel int,@Rdetails nvarchar(200),
@RStatus int,@CreateDate datetime,
@FinishDate datetime,@Remarks nvarchar(50),@IsResearch int)
AS
declare temp_userid int;
BEGIN
select UserID into temp_userid from UsersInfo where ClientName=@ClientName;
insert into Records(RDetails,RLevel,RStatus,UserID,CPerson,CTel,CreateDate,FinishDate,IsResearch,Researched,Remarks)
values(@RDetails,@RLevel,@RStatus,temp_userid,@CPerson,@CTel,@LogPerson,@CreateDate,@FinishDate,@IsResearch,0,@Remarks);
END;

错误信息:
'int' 不是可以识别的 CURSOR 选项。
在此上下文中不允许使用名称 "temp_userid"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。

望大侠们解决!
后来改了一部分语句,如下
----------------
AS
declare @temp_userid int

你这个语句有好几个问题,我一个一个的说:
1、定义变量temp_userid时需要在前面加@,而且declare @temp_userid int需要放在begin and之间;
2、select UserID into temp_userid from UsersInfo where ClientName=@ClientName这句代码有问题,需要改成:select @temp_userid= UserID from UsersInfo where ClientName=@ClientName
3、insert语句里边的temp_userid也许在前加@,记得into后面的字段个数和values里边的内容个数要一致才行
4、SqlServer里边写代码时可以不用加分号的,但是Oracle里边必须加的,你可以把分号去掉,这只是我的跟人观点,呵呵

以上,希望对你有所帮助!