Tsql T-sql:转换varchar值时转换失败';61B08729-BB4F-426C-B20B-697F40F458C5和x27;到数据类型int
我在另一个存储过程中调用一个存储过程,出于某种原因,SQL Server不喜欢我提供的参数。它可能很简单,但我不确定它为什么不喜欢它 存储过程1Tsql T-sql:转换varchar值时转换失败';61B08729-BB4F-426C-B20B-697F40F458C5和x27;到数据类型int,tsql,uniqueidentifier,Tsql,Uniqueidentifier,我在另一个存储过程中调用一个存储过程,出于某种原因,SQL Server不喜欢我提供的参数。它可能很简单,但我不确定它为什么不喜欢它 存储过程1 USE [UserManagerTest] GO /****** Object: StoredProcedure [dbo].[sp_UserManager_Log_User_Off] Script Date: 11/19/2012 11:33:53 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIF
USE [UserManagerTest]
GO
/****** Object: StoredProcedure [dbo].[sp_UserManager_Log_User_Off] Script Date: 11/19/2012 11:33:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Nick Gowdy
-- Create date: 13-11-2012
-- Description: Used by model is UserManager to filter data returned to code
-- =============================================
ALTER PROCEDURE [dbo].[sp_UserManager_Log_User_Off]
@userid UNIQUEIDENTIFIER
AS
BEGIN
-- Get SessionID from UserID
DECLARE @sessionid VARCHAR(60)
DECLARE @userid uniqueidentifier
select @userid = '61B08729-BB4F-426C-B20B-697F40F458C5'
EXEC @sessionid = aspnet_Membership_Custom_GetUserSessionsByUserId @userid
select @sessionid as sessionid
-- Delete user session based on sessionid and userid
EXEC aspnet_Membership_Custom_DeleteUserSession @sessionid, @userid
END
存储过程2
USE [UserManagerTest]
GO
/****** Object: StoredProcedure [dbo].[aspnet_Membership_Custom_GetUserSessionsByUserId] Script Date: 11/19/2012 12:16:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[aspnet_Membership_Custom_GetUserSessionsByUserId]
@UserId uniqueidentifier
AS
BEGIN
declare @SessionId varchar(60)
select @SessionId = ( SELECT
[UserId]
FROM
[dbo].[aspnet_Custom_UserSessionActivity]
WHERE
[UserId] = @UserId)
--select @SessionId
RETURN @SessionId
end
错误是当我执行sp_usermanager_log_user_off时出现的
Msg 245, Level 16, State 1, Procedure aspnet_Membership_Custom_GetUserSessionsByUserId, Line 17
Conversion failed when converting the varchar value '61B08729-BB4F-426C-B20B-697F40F458C5' to data type int.
有什么想法吗?谢谢 使用long或float-该字符串可能太大,无法转换为整数值我的最佳猜测是,您定义了一个过程,而实际上需要一个函数 存储过程返回一个int,这是错误代码。您试图返回其他内容(即唯一标识符),但它不起作用 还可以修改过程以提供输出参数 MSDN文档(): 向调用过程或批处理返回状态值以指示 成功或失败(以及失败的原因)
我感到困惑的是我没有使用任何整数。我正在向存储过程提供uniqueid参数。