Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
matdef
Starting Member
5 Posts |
Posted - 2004-10-13 : 15:15:08
|
| Hello, wondering if someone might be able to see where I am making an error.I have a SPROC that updates muliple tables, is called from a trigger.. but seems to be a data type problem somewhere...------------------CREATE TRIGGER InsertMemberNumToUserID ON AR_MemberInfo FOR INSERTASEXEC AddUserCSI 'AR_MemberInfo.MemberNum','AR_MemberInfo.MbrFirstName','AR_MemberInfo.MbrLastName','AR_MemberInfo.Email'----------------------CREATE procedure dbo.AddUserCSI@MemberNum Int,@MbrFirstName nvarchar(50),@MbrLastName nvarchar(50),@MbrEmail nvarchar(100)asDECLARE @UserName IntDECLARE @UserID IntDECLARE @Password nvarchar(50)SET @UserID = '@MemberNum'SET @UserName = '@MemberNum'SET @Password = "SELECT AR_Financial.WebPassword FROM AR_financial WHERE AR_Financial.MemberNum = @MemberNum"begin transactioninsert into WebUsers ( UserID, FirstName, LastName, Email, UserName, Password)values ( @UserID, @MbrFirstName, @MbrLastName, @MbrEmail, @UserName, @Password)if @@error <> 0rollback transactionelseinsert into WebUserPortals (PortalID,UserID)values (0,@UserID)if @@error <> 0rollback transactionelseinsert into WebUserRoles (UserID,RoleID)values (@UserID,13) if @@error <> 0rollback transactionelseinsert into WebProfile (UserID,PortalID)values (@UserID,0) if @@error <> 0rollback transactionselect SCOPE_IDENTITY()GO-------------Then run query Analyzer:-----------USE MemberDBGOinsert into AR_MemberInfo(MemberNum, MbrFirstName, MbrLastName, MbrEmail)Values('999992', 'testfirst', 'testlast', 'matdef@md-interactive.com')GO--------------and it errors with:Server: Msg 8114, Level 16, State 4, Procedure AddUserCSI, Line 0Error converting data type varchar to int.The statement has been terminated.MemberNum, UserID and UserName are all type "Int" in Table.:( |
|
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2004-10-13 : 15:18:54
|
| Your stored procedure has @MemberNum defined as int. But you are passing in a varchar. So you are passing in the varchar value 999992 but the sproc is expecting it as an int.Tara |
 |
|
|
matdef
Starting Member
5 Posts |
Posted - 2004-10-13 : 15:28:41
|
| Thanks for the reply Tara,Hmmm... the 999992 is acceped by the AR_MemberInfo.MemberNum field as integer? but errors on the sproc call from the trigger on that table? seems strange. |
 |
|
|
jen
Master Smack Fu Yak Hacker
4110 Posts |
Posted - 2004-10-13 : 22:40:48
|
did tara's suggestion worked? uhmm i believe you have some basic problems with your sproc or are they typo?quote: Originally posted by matdef Hello, wondering if someone might be able to see where I am making an error.I have a SPROC that updates muliple tables, is called from a trigger.. but seems to be a data type problem somewhere...------------------CREATE TRIGGER InsertMemberNumToUserID ON AR_MemberInfo FOR INSERTASEXEC AddUserCSI 'AR_MemberInfo.MemberNum','AR_MemberInfo.MbrFirstName','AR_MemberInfo.MbrLastName','AR_MemberInfo.Email'----------------------CREATE procedure dbo.AddUserCSI@MemberNum Int,@MbrFirstName nvarchar(50),@MbrLastName nvarchar(50),@MbrEmail nvarchar(100)asDECLARE @UserName IntDECLARE @UserID IntDECLARE @Password nvarchar(50)SET @UserID = @MemberNumSET @UserName = @MemberNumSET @Password = SELECT AR_Financial.WebPassword FROM AR_financial WHERE AR_Financial.MemberNum = @MemberNum)begin transactioninsert into WebUsers ( UserID, FirstName, LastName, Email, UserName, Password)values ( @UserID, @MbrFirstName, @MbrLastName, @MbrEmail, @UserName, @Passwordif @@error <> 0rollback transactionelseinsert into WebUserPortals (PortalID,UserID)values (0,@UserID)if @@error <> 0rollback transactionelseinsert into WebUserRoles (UserID,RoleID)values (@UserID,13) if @@error <> 0rollback transactionelseinsert into WebProfile (UserID,PortalID)values (@UserID,0) if @@error <> 0rollback transactionselect SCOPE_IDENTITY()GO-------------Then run query Analyzer:-----------USE MemberDBGOinsert into AR_MemberInfo(MemberNum, MbrFirstName, MbrLastName, MbrEmail)Values('999992', 'testfirst', 'testlast', 'matdef@md-interactive.com')GO--------------and it errors with:Server: Msg 8114, Level 16, State 4, Procedure AddUserCSI, Line 0Error converting data type varchar to int.The statement has been terminated.MemberNum, UserID and UserName are all type "Int" in Table.:(
--editi just removed the quotes...--------------------keeping it simple... |
 |
|
|
matdef
Starting Member
5 Posts |
Posted - 2004-10-14 : 12:06:11
|
| Jen, thanks for the QA!! ;)I'm a Newbie in the Trigger/sproc area, so still trying to figure out how to send MemberNum as an Int and not a Varchar.. removing the quote around the value in the trigger did not work (incorrect syntax).. so guess I need some more help.. |
 |
|
|
jen
Master Smack Fu Yak Hacker
4110 Posts |
Posted - 2004-10-15 : 02:27:14
|
| sorry, forgot the close parentheses in your password retrieval...CREATE procedure dbo.AddUserCSI@MemberNum Int,@MbrFirstName nvarchar(50),@MbrLastName nvarchar(50),@MbrEmail nvarchar(100)asDECLARE @UserName IntDECLARE @UserID IntDECLARE @Password nvarchar(50)SET @UserID = @MemberNumSET @UserName = @MemberNumSET @Password = (SELECT AR_Financial.WebPassword FROM AR_financial WHERE AR_Financial.MemberNum = @MemberNum)begin transactioninsert into WebUsers (UserID,FirstName,LastName,Email,UserName,[Password])values (@UserID,@MbrFirstName,@MbrLastName,@MbrEmail,@UserName,@Password)if @@error <> 0rollback transactionelseinsert into WebUserPortals (PortalID,UserID)values (0,@UserID)if @@error <> 0rollback transactionelseinsert into WebUserRoles (UserID,RoleID)values (@UserID,13) if @@error <> 0rollback transactionelseinsert into WebProfile (UserID,PortalID)values (@UserID,0) if @@error <> 0rollback transactionselect SCOPE_IDENTITY()GOpost your error if you do encounter one...--------------------keeping it simple... |
 |
|
|
|
|
|
|
|