TableA:
Columns: ID, Group, Name, Email, NewletterSubscriber
TableB:
Columns: ID, Name, Email
The arguments provided are Group, and NewsletterSubscriber.
I need to insert into Table A all records from Table B where ID > 1000 and I need to insert the Group and NewsLetterSubscriber arguments at the same time because these columns do not allow nulls.
I think it might be something like
insert into TableA (ID, Group, Name, Email, NewletterSubscriber)
values (
select * from TableB where ID > 1000)
But how do I insert the stored procedure arguments into the correct columns of the rows?
Your insert statement should be something like
insert into TableA(group, newsletterSubscriber)
values (@.arg_group, @.arg_newsletterSubscriber)
As per your example:
You can do the following :
insert TableA (ID, Group, Name, Email, NewletterSubscriber)
select ID,@.Group,Name,Email,@.NewsletterSubscriber from TableB where ID > 1000
Here @.Group and @.NewsletterSubscriber are a arguments from a Stored procedure.
Thanks
Naras.
|||I think the procedure definition you want is:
Code Snippet
CREATE PROCEDURE TransRecords_AtoB
@.DefGroup AS int,
@.DefNewsLetterSub AS bit
AS
BEGIN
-- Do you need to clear existing records if so uncomment statement below
-- DELETE FROM TableA
-- WHERE [ID] IN (
-- SELECT ID
-- FROM TableB
-- WHERE (ID > 1000)
-- )
-- Insert the required rows
INSERT INTO TableA ([ID], [Group], [Name],
[Email], [NewsLetterSubscriber])
SELECT [ID], @.DefGroup, [Name], [Email], @.DefNewsLetterSub
FROM TableB
WHERE ([ID] > 1000)
END
If you need to remove records already existing for IDs in TableB then use the commented out delete. Change the types of the arguments to match your fields.
I would recomment that you consider changing some of your column names. It is a bad idea to use identifiers that are reserved words (or might become ones). Name and Group fall into that camp and ID is also suspect. These have to be delimited as shown (and this can cause problem with autogenerated SQL in some tools). Use RecID, RecName, RecGroup etc. or something more descriptive.
No comments:
Post a Comment