如何以不同的方式使用值插入表格?最好没有临时表。下面是我的存储过程代码,但我在插入
时出错CREATE PROCEDURE setBARS
-- Add the parameters for the stored procedure here
@BUSINESSAREANAME nvarchar(50),
@STAFFNAME nvarchar(50),
@ROLENAME nvarchar(50),
@BARSSTARTDATE date,
@BARSENDDATE date
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
WITH t1 (BUSINESSAREAID) AS (SELECT BUSINESSAREAID FROM BUSINESSAREA WHERE BUSINESSAREANAME = @BUSINESSAREANAME),
t2 (STAFFID) AS (SELECT STAFFID FROM STAFF WHERE STAFFNAME = @STAFFNAME),
t3 (ROLEID) AS (SELECT ROLEID FROM ROLE WHERE ROLENAME = @ROLENAME)
INSERT INTO BARS ([BUSINESSAREAID],[STAFFID],[ROLEID],[BARSSTARTDATE],[BARSENDDATE])
VALUES ((SELECT t1.BUSINESSAREAID, t2.STAFFID, t3.ROLEID FROM t1,t2,t3), @BARSSTARTDATE, @BARSENDDATE)
END
GO
答案 0 :(得分:1)
您应该能够直接在SELECT
语句中包含这些值:
INSERT INTO [BARS]
(
[BUSINESSAREAID]
, [STAFFID]
, [ROLEID]
, [BARSSTARTDATE]
, [BARSENDDATE]
)
SELECT
[t1].[BUSINESSAREAID]
, [t2].[STAFFID]
, [t3].[ROLEID]
, @BARSSTARTDATE
, @BARSENDDATE
FROM [t1]
, [t2]
, [t3];
答案 1 :(得分:0)
试试这个
insert into bars([BUSINESSAREAID],[STAFFID],[ROLEID],[BARSSTARTDATE][BARSENDDATE])
SELECT t1.BUSINESSAREAID, t2.STAFFID, t3.ROLEID FROM t1,t2,t3, @BARSSTARTDATE, @BARSENDDATE
答案 2 :(得分:0)
为什么不将所有值放在变量上,例如;
宣布@ val1 设置@ val1 =(从t1中选择前1个businessareaid)
声明@ val2 设置@ val1 =(从t2中选择前1名staffid)
插入栏(val1,val2) 选择@ val1,@ val2