简体   繁体   English

SQL存储过程转换失败

[英]SQL Stored Procedure Conversion Failed

I am having trouble with a stored procedure that is pulling information from the built in C# role and membership management tables to my own custom made tables. 我在使用存储过程时遇到麻烦,该过程将信息从内置的C#角色和成员资格管理表中提取到我自己的定制表中。 The procedure works fine up until the last Update statement. 该过程可以正常运行,直到最后一条Update语句为止。

ALTER PROCEDURE [dbo].[GetPerpsectiveMemberList]
AS
DECLARE @Members TABLE
(
RowNumber INT,
PerspectiveMemberID INT,
FirstName varchar(MAX),
LastName varchar(MAX),
[Address] varchar(MAX),
City varchar(MAX),
[State] varchar(MAX),
Zip varchar(MAX),
Email varchar(MAX),
ASPMemberID varchar(MAX),
ASPUsername varchar(MAX),
RoleID2 varchar(MAX),
RoleName2 varchar(MAX)
)
INSERT INTO @Members
SELECT ROW_NUMBER() OVER (ORDER BY Perspective_Member.PerspectiveMemberID), PerspectiveMemberID, Perspective_Member.FirstName, Perspective_Member.LastName, 
Perspective_Member.[Address], Perspective_Member.City, Perspective_Member.[State],   Perspective_Member.[State], Perspective_Member.Zip, Perspective_Member.ASPMemberID, 
Perspective_Member.ASPUsername,PerspectiveMemberID, ASPMemberID
FROM Perspective_Member
UPDATE @Members
SET RoleID2 = aspnet_UsersInRoles.RoleId
FROM aspnet_UsersInRoles
WHERE ASPMemberID = UserId
UPDATE @Members
SET RoleName2 = RoleName
FROM aspnet_Roles
WHERE RoleID2 = RoleID
SELECT * FROM @Members

When the procedure fails I get this message 当过程失败时,我会收到此消息

Conversion failed when converting from a character string to uniqueidentifier.

When I searched for this error message I found that everyone was having problems going from a string to the unique identifier but what is driving me crazy is that the only unique identifier being used in the last block is being used in the WHERE clause, and as I said earlier the procedure will run perfectly as long as the last UPDATE bl 当我搜索此错误消息时,我发现每个人都遇到从字符串到唯一标识符的问题,但令我抓狂的是,在最后一个块中使用的唯一标识符正在WHERE子句中使用,并且我之前说过,只要最后一次UPDATE bl,该程序就可以完美运行

You have Perspective_Member.[State] listed twice: 您已经列出了Perspective_Member。[State]两次:

Perspective_Member.[State],   Perspective_Member.[State]

Here is corrected INSERT statement: 这是更正后的INSERT语句:

INSERT INTO @Members
    SELECT ROW_NUMBER() OVER (ORDER BY Perspective_Member.PerspectiveMemberID), 
        PerspectiveMemberID, 
        Perspective_Member.FirstName, 
        Perspective_Member.LastName,
        Perspective_Member.[Address], 
        Perspective_Member.City,
        Perspective_Member.[State], 
        Perspective_Member.Zip,
        Perspective_Member.Email, 
        Perspective_Member.ASPMemberID,
        Perspective_Member.ASPUsername,
        PerspectiveMemberID, 
        ASPMemberID
    FROM Perspective_Member

Also, you should change the data type for your ASPMemberID and RoleID2 fields in @Members table to uniqueidentifier . 另外,您应该将@Members表中ASPMemberID和RoleID2字段的数据类型更改为uniqueidentifier

Update: it appears that the error is due to PerspectiveMemberID value (INT) being inserted into RoleID2 column (uniqueidentifier). 更新:该错误似乎是由于PerspectiveMemberID值(INT)插入RoleID2列(uniqueidentifier)中引起的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM