|
-
October 20th, 2009, 06:38 AM
#1
Problem setting a Variable.
Guys,
In a Transaction Block I have the following code, and in my catch block I report the error. It States that on line 27 (reference to the first variable being set) That the Subquery returned more than 1 value which is not permitted.
When I run the queries individually sustituting the @TheCaller variable Both queries return 1 value as I'd expect and although it states line 27, I think it's a red herring since the subqueries are on the more complex query. I then wrapped the whole lot in a 'Select top 1' statement, but I still receive the same error. Again if I run the individual subqueries on their own again I only receive 1 record. This is really baffling me as I really cannot see what is wrong.
Code:
--PROF_SUBTYPE_ID = 3 -- customer
set @ProfDetId = (Select PROF_DET_ID from dbo.TB_ProfileDetail
Inner Join dbo.TB_ProfileHeader on dbo.TB_ProfileHeader.PROF_ID = dbo.TB_ProfileDetail.PROF_ID
Inner Join dbo.TB_ProfileType on dbo.TB_ProfileType.PROF_TYPE_ID = dbo.TB_ProfileHeader.PROF_TYPE_ID
where TB_ProfileDetail.PROF_ID = @TheCaller
AND dbo.TB_ProfileType.PROF_SUBTYPE_ID = 3)
--PROF_SUBTYPE_ID = 1 -- invoice
set @InvDetId = (Select PROF_DET_ID from dbo.TB_ProfileDetail
Inner Join dbo.TB_ProfileHeader on dbo.TB_ProfileHeader.PROF_ID = dbo.TB_ProfileDetail.PROF_ID
Inner Join dbo.TB_ProfileType on dbo.TB_ProfileType.PROF_TYPE_ID = dbo.TB_ProfileHeader.PROF_TYPE_ID
where TB_ProfileDetail.ind_ID
in (Select ind_ID from dbo.TB_ProfileDetail
Inner Join dbo.TB_ProfileHeader on dbo.TB_ProfileHeader.PROF_ID = dbo.TB_ProfileDetail.PROF_ID
Inner Join dbo.TB_ProfileType on dbo.TB_ProfileType.PROF_TYPE_ID = dbo.TB_ProfileHeader.PROF_TYPE_ID
AND TB_ProfileDetail.PROF_ID = @TheCaller)
AND dbo.TB_ProfileType.PROF_SUBTYPE_ID = 1
union
Select PROF_DET_ID from dbo.TB_ProfileDetail
Inner Join dbo.TB_ProfileHeader on dbo.TB_ProfileHeader.PROF_ID = dbo.TB_ProfileDetail.PROF_ID
Inner Join dbo.TB_ProfileType on dbo.TB_ProfileType.PROF_TYPE_ID = dbo.TB_ProfileHeader.PROF_TYPE_ID
where TB_ProfileDetail.COMP_ID
in (Select COMP_ID from dbo.TB_ProfileDetail
Inner Join dbo.TB_ProfileHeader on dbo.TB_ProfileHeader.PROF_ID = dbo.TB_ProfileDetail.PROF_ID
Inner Join dbo.TB_ProfileType on dbo.TB_ProfileType.PROF_TYPE_ID = dbo.TB_ProfileHeader.PROF_TYPE_ID
AND TB_ProfileDetail.PROF_ID = @TheCaller)
AND dbo.TB_ProfileType.PROF_SUBTYPE_ID = 1)
Last edited by Bill Crawley; October 20th, 2009 at 06:43 AM.
If you find my answers helpful, dont forget to rate me 
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|