sql:子查詢返回的值不止一個。

     在項目中寫了兩個表的觸發器分別是cd表。
   觸發本觸發器的條件是:插入的語句的projectid(企業編號)>0而且cdxm(長貸項目)=‘借款金額’時,同時在本表中插入一條projectid和marketid、cdje(長貸金額)相同,marketyear=插入的marketyear(發生年份)+插入的zq(帳期),長貸項目爲‘應還金額’的數據記錄。
寫法以下:修改本錯誤主要看cd表。
if ( select projectid from inserted )>0
begin
if( select cdxm from inserted)= '借款金額'
begin
insert into cd    
select projectid,marketid, convert( int,marketyear)+ convert( int,zq),
'應還金額',cdje,0 from inserted    
end

end
      根據sql跟蹤,錯誤提示爲第一行和第三行,應修改成:
Code
if exists( select projectid from inserted     where projectid>0)
begin
insert into cd    
select projectid,marketid, convert( int,marketyear)+ convert( int,zq),
'應還金額',cdje,0 from inserted where    cdxm= '借款金額' and projectid>0
end
使用exists關鍵字,判斷是否包含結果集,這樣就防止了第一行返回多條記錄,同時將cdxm放入到內部限制,而不是用if,返回多結果集了。
問題是解決了,令我奇怪的是,我還有一個表,寫法如一個段代碼,內容基本類型,就不報錯,很奇怪呀!sql也有表裏不一的狀況呀!
相關文章
相關標籤/搜索