C# 在insert select命令sql c中从文本框添加行
我正在创建一个web应用程序,其中我正在使用insert into select命令 为此,我采用了一个如下所示的存储过程C# 在insert select命令sql c中从文本框添加行,c#,sql-server,insert,insert-into,selectcommand,C#,Sql Server,Insert,Insert Into,Selectcommand,我正在创建一个web应用程序,其中我正在使用insert into select命令 为此,我采用了一个如下所示的存储过程 alter PROCEDURE profinalinstexpensesonid ( @from varchar(5000), @to varchar(5000), @trainer varchar(5000), @sonvinid
alter PROCEDURE profinalinstexpensesonid
(
@from varchar(5000),
@to varchar(5000),
@trainer varchar(5000),
@sonvinid varchar(5000),
@button varchar(5000),
@bill_id varchar(5000)
)
AS
BEGIN
if(@button='allselect')
begin
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount)
select
instructoreexpense.sonvinid,
sonvininsert.trainer,
convert(varchar,sonvininsert.date,105) as date ,
sonvininsert.brandname,
substring(sonvininsert.zone,1,1)as zone,
sonvininsert.location,
sonvininsert.area,
companysonvinunitvenue.venuename,
sonvininsert.venue,
sonvininsert.instructore,
instructoreexpense.amount
from
instructoreexpense
left outer join sonvininsert on
sonvininsert.sonvinid=instructoreexpense.sonvinid and
sonvininsert.status='0'
left outer join finalinstructoreexpense on
finalinstructoreexpense.sonvinid=instructoreexpense.sonvinid
left outer join companysonvinunitvenue on
companysonvinunitvenue.id=sonvininsert.comsonvinid
where
sonvininsert.sonvinid not in(select sonvinid from listinvoice)
and
sonvininsert.date
between convert(datetime,@from,105) and
convert(datetime,@to,105) and
sonvininsert.trainer=(select empname from trainerdetails where trid=@trainer)
and instructoreexpense.sonvinid NOT IN (
SELECT CAST(Item AS INTEGER)
FROM SplitString(@sonvinid, ',')
)
order by instructoreexpense.sonvinid
end
end
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount,bill_id=@bill_id)
现在这个工作非常好,现在在这条线上
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount)
我想添加bill\u id
我将从程序中的文本框中获取我的账单id
所以我想把这一行改成这样
alter PROCEDURE profinalinstexpensesonid
(
@from varchar(5000),
@to varchar(5000),
@trainer varchar(5000),
@sonvinid varchar(5000),
@button varchar(5000),
@bill_id varchar(5000)
)
AS
BEGIN
if(@button='allselect')
begin
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount)
select
instructoreexpense.sonvinid,
sonvininsert.trainer,
convert(varchar,sonvininsert.date,105) as date ,
sonvininsert.brandname,
substring(sonvininsert.zone,1,1)as zone,
sonvininsert.location,
sonvininsert.area,
companysonvinunitvenue.venuename,
sonvininsert.venue,
sonvininsert.instructore,
instructoreexpense.amount
from
instructoreexpense
left outer join sonvininsert on
sonvininsert.sonvinid=instructoreexpense.sonvinid and
sonvininsert.status='0'
left outer join finalinstructoreexpense on
finalinstructoreexpense.sonvinid=instructoreexpense.sonvinid
left outer join companysonvinunitvenue on
companysonvinunitvenue.id=sonvininsert.comsonvinid
where
sonvininsert.sonvinid not in(select sonvinid from listinvoice)
and
sonvininsert.date
between convert(datetime,@from,105) and
convert(datetime,@to,105) and
sonvininsert.trainer=(select empname from trainerdetails where trid=@trainer)
and instructoreexpense.sonvinid NOT IN (
SELECT CAST(Item AS INTEGER)
FROM SplitString(@sonvinid, ',')
)
order by instructoreexpense.sonvinid
end
end
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount,bill_id=@bill_id)
但我得到的错误是
Msg 102,15级,状态1,程序ProfinalInstallExpensonid,第行
14“=”附近的语法不正确
我需要做的是
我正在从我的文本框中获取bill_id
还有其他选项吗?问题在于您的INSERT语句:
insert into listinvoice(sonvinid,tid,date,brandname,zone,
location,area,venuename,venue,instructore,amount,bill_id=@bill_id)
你还没有完成陈述。您通常会将其格式化为以下格式:
INSERT INTO (Col1, Col2, Col3) VALUES (@Val1, @Val2, @Val3)
insert into listinvoice(sonvinid,tid,date,brandname,zone,
location,area,venuename,venue,instructore,amount,bill_id)
VALUES (@sonvinid, ..., @bill_id)
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount,bill_id)
select
instructoreexpense.sonvinid,
sonvininsert.trainer,
convert(varchar,sonvininsert.date,105) as date ,
sonvininsert.brandname,
substring(sonvininsert.zone,1,1)as zone,
sonvininsert.location,
sonvininsert.area,
companysonvinunitvenue.venuename,
sonvininsert.venue,
sonvininsert.instructore,
instructoreexpense.amount,
@bill_id
from
instructoreexpense
left outer join sonvininsert on
sonvininsert.sonvinid=instructoreexpense.sonvinid and
sonvininsert.status='0'
left outer join finalinstructoreexpense on
finalinstructoreexpense.sonvinid=instructoreexpense.sonvinid
left outer join companysonvinunitvenue on
companysonvinunitvenue.id=sonvininsert.comsonvinid
where
sonvininsert.sonvinid not in(select sonvinid from listinvoice)
and
sonvininsert.date
between convert(datetime,@from,105) and
convert(datetime,@to,105) and
sonvininsert.trainer=(select empname from trainerdetails where trid=@trainer)
and instructoreexpense.sonvinid NOT IN (
SELECT CAST(Item AS INTEGER)
FROM SplitString(@sonvinid, ',')
)
order by instructoreexpense.sonvinid
首先在第一组中列出要为其提供值的列,然后在关键字值之后的第二组中列出值本身
在您的列表中,您似乎列出了要插入的列,但最后一列除外,您试图以某种方式分配一个值。你需要这样的东西:
INSERT INTO (Col1, Col2, Col3) VALUES (@Val1, @Val2, @Val3)
insert into listinvoice(sonvinid,tid,date,brandname,zone,
location,area,venuename,venue,instructore,amount,bill_id)
VALUES (@sonvinid, ..., @bill_id)
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount,bill_id)
select
instructoreexpense.sonvinid,
sonvininsert.trainer,
convert(varchar,sonvininsert.date,105) as date ,
sonvininsert.brandname,
substring(sonvininsert.zone,1,1)as zone,
sonvininsert.location,
sonvininsert.area,
companysonvinunitvenue.venuename,
sonvininsert.venue,
sonvininsert.instructore,
instructoreexpense.amount,
@bill_id
from
instructoreexpense
left outer join sonvininsert on
sonvininsert.sonvinid=instructoreexpense.sonvinid and
sonvininsert.status='0'
left outer join finalinstructoreexpense on
finalinstructoreexpense.sonvinid=instructoreexpense.sonvinid
left outer join companysonvinunitvenue on
companysonvinunitvenue.id=sonvininsert.comsonvinid
where
sonvininsert.sonvinid not in(select sonvinid from listinvoice)
and
sonvininsert.date
between convert(datetime,@from,105) and
convert(datetime,@to,105) and
sonvininsert.trainer=(select empname from trainerdetails where trid=@trainer)
and instructoreexpense.sonvinid NOT IN (
SELECT CAST(Item AS INTEGER)
FROM SplitString(@sonvinid, ',')
)
order by instructoreexpense.sonvinid
显然,您应该用实际参数替换省略号。您必须更改您的语句。您当前正在执行以下操作:
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount,bill_id=@bill_id)
应该是这样的:
INSERT INTO (Col1, Col2, Col3) VALUES (@Val1, @Val2, @Val3)
insert into listinvoice(sonvinid,tid,date,brandname,zone,
location,area,venuename,venue,instructore,amount,bill_id)
VALUES (@sonvinid, ..., @bill_id)
insert into listinvoice(sonvinid,tid,date,brandname,zone,location,area,venuename,venue,instructore,amount,bill_id)
select
instructoreexpense.sonvinid,
sonvininsert.trainer,
convert(varchar,sonvininsert.date,105) as date ,
sonvininsert.brandname,
substring(sonvininsert.zone,1,1)as zone,
sonvininsert.location,
sonvininsert.area,
companysonvinunitvenue.venuename,
sonvininsert.venue,
sonvininsert.instructore,
instructoreexpense.amount,
@bill_id
from
instructoreexpense
left outer join sonvininsert on
sonvininsert.sonvinid=instructoreexpense.sonvinid and
sonvininsert.status='0'
left outer join finalinstructoreexpense on
finalinstructoreexpense.sonvinid=instructoreexpense.sonvinid
left outer join companysonvinunitvenue on
companysonvinunitvenue.id=sonvininsert.comsonvinid
where
sonvininsert.sonvinid not in(select sonvinid from listinvoice)
and
sonvininsert.date
between convert(datetime,@from,105) and
convert(datetime,@to,105) and
sonvininsert.trainer=(select empname from trainerdetails where trid=@trainer)
and instructoreexpense.sonvinid NOT IN (
SELECT CAST(Item AS INTEGER)
FROM SplitString(@sonvinid, ',')
)
order by instructoreexpense.sonvinid