Click here to Skip to main content
15,884,388 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
Dear All,

I have two Database
1.ta
2.Theorem_Analytics_database.
In ta Database, Client_Master Table
Client_ID Client_Name Client_Alias
4 Theorem Analytics ta2

In Theorem_Analytics_database , User_Master Table
User_ID User_Name User_Password Email Client_ID
1 Admin user123 admin@gmail.com 4

I have a stored Procedure in ta
Where I will fetch all information of client from client_master.
If client name is not match with Client ,display invalid client.
If client name is match ,then it will create dynamically database from client_name like Theorem_ Analytics_database,
Then it will select Email from User_Master from Theorem_Analytics_database, and compare if email is equal with admin@gmail.com, a messageas output display’Success’ else ‘unsuccess.’

PLEASE Help me.
This is my procedure.

SQL
ALTER PROCEDURE [dbo].[LoginProcedure]

(

@Username VARCHAR(50)

,@password VARCHAR(50)

,@Client varchar(50)

,@Response varchar(max) out

)

AS

declare @Client_ID int;

declare @Client_Name varchar(100);

BEGIN TRY

--Get Client Information from Client_Master

  Select @Client_ID=Client_ID,@Client_Name=Client_Name FROM Client_Master WHERE Client_Alias= @Client or Client_Name=@Client;

 

  IF @Client_ID is null

        SET @Response='Invalid Client Name'

  ELSE

    BEGIN

      declare @NewDB varchar(MAX); 

      SET  @NewDB=Replace(@Client_Name,' ','_')+'_database';

set @NewDB='['+@NewDB+'].dbo.User_Master';

 

declare @sqlQuery varchar(MAX),@EMAIL VARCHAR(MAX)

SET @EMAIL='User_Email'

set @sqlQuery='select '+@EMAIL+' AS COL1 from '+ @NewDB+' where User_Name=''admin''';
exec (@sqlQuery);
if @EMAIL='admin@gmail.com'
 SET @Response = 'success'+@EMAIL;
else
SET @Response = 'UNsuccess'+@EMAIL;
--SET @Response = @EMAIL;

END

END TRY

BEGIN CATCH

SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() as ERRORMSG

END CATCH
Posted
Updated 28-Jul-13 9:34am
v2
Comments
CHill60 28-Jul-13 17:10pm    
Please help you with what? Explain your problem

1 solution

Instead of Using exec(@SqlQuery)
Use this:
SQL
execute sp_executesql @sqlQuery, N'@EMAIL VARCHAR(MAX) OUTPUT', @EMAIL = @EMAIL output;


SQL
ALTER PROCEDURE [dbo].[LoginProcedure]
 @Username VARCHAR(50),
 @password VARCHAR(50),
 @Client varchar(50),
 @Response varchar(max) out
 
AS
Declare @Client_ID int, @Client_Name varchar(100);
declare @sqlQuery varchar(MAX),@EMAIL VARCHAR(MAX)
declare @NewDB varchar(MAX),@UserEmail varchar(100) 
 
BEGIN TRY
 
--Get Client Information from Client_Master

  Select @Client_ID=Client_ID,@Client_Name=Client_Name FROM Client_Master WHERE Client_Alias= @Client or Client_Name=@Client;
 
   IF @Client_ID is null
        SET @Response='Invalid Client Name'
  ELSE
  BEGIN
      
      SET  @NewDB=Replace(@Client_Name,' ','_')+'_database';
	  set @NewDB='['+@NewDB+'].dbo.User_Master';
	  SET @EMAIL='User_Email'
	  set @sqlQuery='select '+@EMAIL+' AS COL1 from '+ @NewDB+' where User_Name=''admin''';
	  Execute sp_executesql @sqlQuery, N'@EMAIL VARCHAR(MAX) OUTPUT', @EMAIL = @EMAIL output;

	  If @EMAIL='admin@gmail.com'
		  SET @Response = 'success'+@EMAIL;
	  Else
		  SET @EMAIL = 'UNsuccess'+@EMAIL;
--SET @Response = @EMAIL;
 END
END TRY
 
BEGIN CATCH
	SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() as ERRORMSG
END CATCH

Hope this Helps...
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900