Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在insert select命令sql c中从文本框添加行_C#_Sql Server_Insert_Insert Into_Selectcommand - Fatal编程技术网

C# 在insert select命令sql c中从文本框添加行

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

我正在创建一个web应用程序,其中我正在使用insert into select命令

为此,我采用了一个如下所示的存储过程

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