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.

 All Forums
 SQL Server 2000 Forums
 Transact-SQL (2000)
 Error on trigger calling sproc - varchar to int

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 INSERT
AS

EXEC 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)

as
DECLARE @UserName Int
DECLARE @UserID Int
DECLARE @Password nvarchar(50)
SET @UserID = '@MemberNum'
SET @UserName = '@MemberNum'
SET @Password = "SELECT AR_Financial.WebPassword FROM AR_financial WHERE AR_Financial.MemberNum = @MemberNum"
begin transaction
insert into WebUsers (
UserID,
FirstName,
LastName,
Email,
UserName,
Password
)
values (
@UserID,
@MbrFirstName,
@MbrLastName,
@MbrEmail,
@UserName,
@Password
)
if @@error <> 0
rollback transaction
else
insert into WebUserPortals (PortalID,UserID)
values (0,@UserID)
if @@error <> 0
rollback transaction
else
insert into WebUserRoles (UserID,RoleID)
values (@UserID,13)
if @@error <> 0
rollback transaction
else
insert into WebProfile (UserID,PortalID)
values (@UserID,0)
if @@error <> 0
rollback transaction
select SCOPE_IDENTITY()
GO
-------------



Then run query Analyzer:
-----------
USE MemberDB
GO

insert 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 0
Error 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
Go to Top of Page

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.
Go to Top of Page

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 INSERT
AS

EXEC 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)

as
DECLARE @UserName Int
DECLARE @UserID Int
DECLARE @Password nvarchar(50)
SET @UserID = @MemberNum
SET @UserName = @MemberNum
SET @Password = SELECT AR_Financial.WebPassword FROM AR_financial WHERE AR_Financial.MemberNum = @MemberNum)
begin transaction
insert into WebUsers (
UserID,
FirstName,
LastName,
Email,
UserName,
Password
)
values (
@UserID,
@MbrFirstName,
@MbrLastName,
@MbrEmail,
@UserName,
@Password

if @@error <> 0
rollback transaction
else
insert into WebUserPortals (PortalID,UserID)
values (0,@UserID)
if @@error <> 0
rollback transaction
else
insert into WebUserRoles (UserID,RoleID)
values (@UserID,13)
if @@error <> 0
rollback transaction
else
insert into WebProfile (UserID,PortalID)
values (@UserID,0)
if @@error <> 0
rollback transaction
select SCOPE_IDENTITY()
GO
-------------



Then run query Analyzer:
-----------
USE MemberDB
GO

insert 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 0
Error converting data type varchar to int.
The statement has been terminated.

MemberNum, UserID and UserName are all type "Int" in Table.
:(


--edit
i just removed the quotes...
--------------------
keeping it simple...
Go to Top of Page

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..
Go to Top of Page

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)

as
DECLARE @UserName Int
DECLARE @UserID Int
DECLARE @Password nvarchar(50)

SET @UserID = @MemberNum
SET @UserName = @MemberNum
SET @Password = (SELECT AR_Financial.WebPassword FROM AR_financial WHERE AR_Financial.MemberNum = @MemberNum)

begin transaction
insert into WebUsers (
UserID,
FirstName,
LastName,
Email,
UserName,
[Password]
)
values (
@UserID,
@MbrFirstName,
@MbrLastName,
@MbrEmail,
@UserName,
@Password
)
if @@error <> 0
rollback transaction
else
insert into WebUserPortals (PortalID,UserID)
values (0,@UserID)
if @@error <> 0
rollback transaction
else
insert into WebUserRoles (UserID,RoleID)
values (@UserID,13)
if @@error <> 0
rollback transaction
else
insert into WebProfile (UserID,PortalID)
values (@UserID,0)
if @@error <> 0
rollback transaction
select SCOPE_IDENTITY()
GO


post your error if you do encounter one...

--------------------
keeping it simple...
Go to Top of Page
   

- Advertisement -