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 |
|
phishncode
Starting Member
2 Posts |
Posted - 2008-03-20 : 21:27:04
|
| I have created an updatabable view.It uses the INSTEAD OF INSERT clause to fire because there are multiple base tables. lets say the view has 6 fieldsfield1,field2, field3, field4, field5, field6to get the values from the inserted record I have to declare the variables firstdeclare field1 varchar(50),field2 varchar(50), field3 varchar(50), field4 varchar(50), field5 varchar(50), field6 varchar(50)I then have to assign the information to these variablesselect @field1 = field1,@field2 = field2,@field3 = field3, @field4 = field4,@field5 = field5,@field6 = field6 from insertedI can then use these values to execute store proceduresexec sp1 @field1, @field2, @field3exec sp2 @field4, @field5, @field6is there anyway to just do thisexec sp1 inserted.field1, inserted.field2, inserted.field3exec sp2 inserted.field4, inserted.field5, inserted.field6I tried exec spec select field1, field2, field3 from inserted and it did not give me an error message BUT it did not workI would like to use my stored procedures for data insertionI appreciate your help |
|
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2008-03-20 : 22:02:28
|
| You must pass values to parameters. You will need to make quite a bit of changes to your stored procedure to do what you want. But we will need more information in order to help. We'll need to see your stored procedure and also show us via a data example what needs to happen.Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/ |
 |
|
|
phishncode
Starting Member
2 Posts |
Posted - 2008-03-20 : 22:41:22
|
| I need to have an updatable view it has to be this way to simplify data access from an access front end.there is an address table which is accessed from many different tables one of which is the vendor table.USE [CFLRPS]GO/****** Object: Table [dbo].[vendor] Script Date: 03/20/2008 19:39:01 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[vendor]( [vendor_id] [int] IDENTITY(1,1) NOT NULL, [vendor_nm] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [vendor_creation_user_nm] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [vendor_billing_addr_id] [int] NULL, [vendor_creation_dt] [datetime] NULL CONSTRAINT [DF_vendor_vendor_creation_dt] DEFAULT (getdate()), [vendor_abbr] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [vendor_cntc_nm] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [vendor_mailing_addr_id] [int] NULL, [vendor_notes] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [vendor_cd] [varchar](4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CONSTRAINT [PK_vendor] PRIMARY KEY CLUSTERED ( [vendor_id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[vendor] WITH CHECK ADD CONSTRAINT [FK_vendor_addr] FOREIGN KEY([vendor_mailing_addr_id])REFERENCES [dbo].[addr] ([addr_id])GOALTER TABLE [dbo].[vendor] CHECK CONSTRAINT [FK_vendor_addr]this is the address tableUSE [CFLRPS]GO/****** Object: Table [dbo].[addr] Script Date: 03/20/2008 19:39:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[addr]( [addr_id] [int] IDENTITY(1,1) NOT NULL, [addr_nm] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [addr_city_nm] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [addr1] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [addr2] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [addr3] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [zip_cd] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [addr_ph_no] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [addr_fax_no] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [st_id] [int] NULL, [addr_creation_dt] [datetime] NULL CONSTRAINT [DF_addr_addr_creation_dt] DEFAULT (getdate()), [addr_creation_user_nm] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CONSTRAINT [PK_addr] PRIMARY KEY CLUSTERED ( [addr_id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[addr] WITH CHECK ADD CONSTRAINT [FK_addr_st] FOREIGN KEY([st_id])REFERENCES [dbo].[st] ([st_id])GOALTER TABLE [dbo].[addr] CHECK CONSTRAINT [FK_addr_st]here is the viewSELECT billing_addr.addr_nm AS billing_addr_nm, billing_addr.addr_city_nm AS billing_addr_city_nm, billing_addr.addr1 AS billing_addr_addr1, billing_addr.addr2 AS billing_addr_addr2, billing_addr.addr3 AS billing_addr_addr3, billing_addr.zip_cd AS billing_addr_zip_cd, billing_addr.addr_ph_no AS billing_addr_ph_no, billing_addr.addr_fax_no AS billing_addr_fax_no, mailing_addr.addr_nm AS mailing_addr_nm, mailing_addr.addr_city_nm AS mailing_addr_city_nm, mailing_addr.addr1 AS mailing_addr_addr1, mailing_addr.addr2 AS mailing_addr_addr2, mailing_addr.addr3 AS mailing_addr_addr3, mailing_addr.zip_cd AS mailing_addr_zip_cd, mailing_addr.addr_ph_no AS mailing_addr_ph_no, mailing_addr.addr_fax_no AS mailing_addr_fax_no, dbo.vendor.vendor_nm, dbo.vendor.vendor_abbr, dbo.vendor.vendor_notes, dbo.vendor.vendor_cd, dbo.vendor.vendor_id, dbo.vendor.vendor_mailing_addr_id, dbo.vendor.vendor_billing_addr_id, dbo.vendor.vendor_cntc_nmFROM dbo.vendor INNER JOIN dbo.addr AS billing_addr ON dbo.vendor.vendor_billing_addr_id = billing_addr.addr_id INNER JOIN dbo.addr AS mailing_addr ON dbo.vendor.vendor_mailing_addr_id = mailing_addr.addr_idand the createaddr stored procedureUSE [CFLRPS]GO/****** Object: StoredProcedure [dbo].[createaddr] Script Date: 03/20/2008 19:35:30 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- =============================================CREATE PROCEDURE [dbo].[createaddr] -- Add the parameters for the stored procedure here @addr_nm varchar(50) = NULL, @addr_city_nm varchar(50) = NULL, @addr1 varchar(50) = NULL, @addr2 varchar(50) = NULL, @addr3 varchar(50) = NULL, @zip_cd varchar(50) = NULL, @addr_ph_no varchar(20) = NULL, @addr_fax_no varchar(20) = NULL, @st_id int = NULLASBEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON;INSERT INTO [CFLRPS].[dbo].[addr] ([addr_nm] ,[addr_city_nm] ,[addr1] ,[addr2] ,[addr3] ,[zip_cd] ,[addr_ph_no] ,[addr_fax_no] ,[st_id]) VALUES (@addr_nm, @addr_city_nm, @addr1, @addr2, @addr3, @zip_cd, @addr_ph_no, @addr_fax_no, @st_id) -- Insert statements for procedure hereRETURN @@IDENTITYENDand here is the createvendor stored procedureUSE [CFLRPS]GO/****** Object: StoredProcedure [dbo].[createvendor] Script Date: 03/20/2008 19:36:13 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- =============================================CREATE PROCEDURE [dbo].[createvendor] -- Add the parameters for the stored procedure here @vendor_nm varchar(50) = NULL, @vendor_billing_addr_id int = NULL, @vendor_abbr varchar(50) = NULL, @vendor_cntc_nm varchar(50) = NULL, @vendor_mailing_addr_id int = NULL, @vendor_notes text = NULL, @vendor_cd varchar(4) = NULLASBEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure hereINSERT INTO [CFLRPS].[dbo].[vendor] ([vendor_nm] ,[vendor_billing_addr_id] ,[vendor_abbr] ,[vendor_cntc_nm] ,[vendor_mailing_addr_id] ,[vendor_notes] ,[vendor_cd]) VALUES (@vendor_nm, @vendor_billing_addr_id, @vendor_abbr, @vendor_cntc_nm, @vendor_mailing_addr_id, @vendor_notes, @vendor_cd)RETURN @@IDENTITYENDSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- =============================================ALTER TRIGGER viewvendorinsteadofinsert ON dbo.viewvendor instead of insert AS DECLARE@billing_addr_id int,@mailing_addr_id int,@vendor_id int declare @billing_addr_nm varchar(50), @billing_addr_city_nm varchar(50), @billing_addr_addr1 varchar(50), @billing_addr_addr2 varchar(50), @billing_addr_addr3 varchar(50), @billing_addr_zip_cd varchar(50), @billing_addr_ph_no varchar(20), @billing_addr_fax_no varchar(20),@billing_addr_st_id int @mailing_addr_nm varchar(50), @mailing_addr_city_nm varchar(50), @mailing_addr_addr1 varchar(50), @mailing_addr_addr2 varchar(50), @mailing_addr_addr3 varchar(50), @mailing_addr_zip_cd varchar(50), @mailing_addr_ph_no varchar(20), @mailing_addr_fax_no varchar(20),@mailing_addr_st_id int BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON;--declare records cursor for select * from inserted select @billing_addr_nm = billing_addr_nm,@billing_addr_city_nm = billing_addr_city_nm , @billing_addr_addr1 = billing_addr_addr1,@billing_addr_addr2 = billing_addr_addr2 , @billing_addr_addr3 = billing_addr_addr3,@billing_addr_zip_cd = billing_addr_zip_cd, @billing_addr_ph_no = billing_addr_ph_no, @billing_addr_fax_no = billing_addr_fax_no from inserted select @mailing_addr_nm = mailing_addr_nm,@mailing_addr_city_nm = mailing_addr_city_nm , @mailing_addr_addr1 = mailing_addr_addr1,@mailing_addr_addr2 = mailing_addr_addr2 , @mailing_addr_addr3 = mailing_addr_addr3,@mailing_addr_zip_cd = mailing_addr_zip_cd, @mailing_addr_ph_no = mailing_addr_ph_no, @mailing_addr_fax_no = mailing_addr_fax_no from insertedexecute @billing_addr_id = createaddr @billing_addr_nm, @billing_addr_city_nm, @billing_addr_addr1, @billing_addr_addr2, @billing_addr_addr3,@billing_addr_zip_cd,@billing_addr_ph_no,@billing_addr_fax_no,@billing_addr_st_id--execute @mailing_addr_id = createaddr select mailing_addr_nm, mailing_addr_city_nm,mailing_addr_addr1,mailing_addr_addr2,mailing_addr_addr3,mailing_addr_zip_cd,mailing_addr_ph_no,mailing_addr_fax_no from inserted execute @mailing_addr_id = createaddr @mailing_addr_nm, @mailing_addr_city_nm, @mailing_addr_addr1, @mailing_addr_addr2, @mailing_addr_addr3,@mailing_addr_zip_cd,@mailing_addr_ph_no,@mailing_addr_fax_no,@mailing_addr_st_id-- This is what I would like here to simplify creationexecute @vendor_id = createvendor select vendor_nm, @billing_addr_id,vendor_abbr, vendor_cntc_nm,@mailing_addr_id,vendor_notes, vendor_cd from inserted--records.billing_addr_nm, records.billing_addr_city_nm,records.billing_addr_addr1,records.billing_addr_addr2,records.billing_addr_addr3,records.billing_addr_zip_cd,records.billing_addr_ph_no,records.billing_addr_fax_no -- Insert statements for trigger hereENDGOI appreciate your help |
 |
|
|
|
|
|
|
|