當前位置:首頁 » 編程語言 » sql子程序返回值不止一個
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql子程序返回值不止一個

發布時間: 2022-03-03 11:29:07

sql 觸發器 子查詢返回的不止一個值

當然有問題,你設的參數只能取到一個值,所以如果你插入一行就沒有問題,超過一行就不對。

ALTER TRIGGER 班級表人數添加
ON dbo.學生信息表
FOR insert
AS
begin
update a set a.人數=b.人數
from 班級表 a,(select 班級編號,count(*) 人數 from inserted group by 班級編號) b
where a.班級編號=b.班級編號
end

② sql 問題子查詢返回的值不止一個。

解決方法如下:

返回一個值:返回多個說明資料庫中滿足用戶查詢條件的記錄有多個,要返回一個就說明用戶的查詢條件不夠,再加條件控制就行了,比如在語句末尾再加 and ***=『***』;

如果用戶問的是如何在後台程序中接收的話,用List可以,一個節點接收Result的一行值,讀取的時候遍歷List就行了。

(2)sql子程序返回值不止一個擴展閱讀:

刪除表

drop table tabname--這是將表連同表中信息一起刪除但是日誌文件中會有記錄

刪除信息

delete from table_name-這是將表中信息刪除但是會保留這個表

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1[separator]

③ SQL SERVER 子查詢返回的值不止一個。

IF((SELECT top 1 shippedDate FROM inserted) > RequiredDate))

④ SQL問題,子查詢返回的值不止一個!

執行後報下面的錯誤,是哪裡出錯了?幫看下,謝謝.

"消息 512,級別 16,狀態 1,第 1 行
子查詢返回的值不止一個。當子查詢跟隨在 =、!=、<、<=、>、>= 之後,或子查詢用作表達式時,這種情況是不允許的。
"

⑤ sql server觸發器 子查詢返回值不止一個 如何解決

你說的是
SELECT ...... FROM inserted; 返回多行的情況么?

--假設這個A是主表

CREATE TABLE A(
AID INT IDENTITY(1, 1) PRIMARY KEY,
money INT
);

-- 假設這個B是 日誌表, 負責記錄 A表 發生的變化。
CREATE TABLE B(
BID INT IDENTITY(1, 1) PRIMARY KEY,

AID INT,
money INT
);
go

-- 假設這個C也是日誌表, 負責記錄 A表 發生的變化。

-- 但是這個C表是用於演示 不正確使用的例子。

CREATE TABLE C(
CID INT IDENTITY(1, 1) PRIMARY KEY,
AID INT,
money INT
);
go

-- 測試的存儲過程

-- 當 A 表 插入 / 更新 / 刪除的時候i, 都觸發。

CREATE TRIGGER AfterA
ON A
FOR INSERT,UPDATE,DELETE
AS
DECLARE @aid INT, @money INT;
BEGIN

IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 插入觸發.
-- 正確的使用.
INSERT INTO B
SELECT
inserted.aid,
inserted.money
FROM
inserted;

-- 不正確的使用.
SELECT @aid = aid, @money = money FROM inserted;
INSERT INTO C VALUES ( @aid, @money);
END;

IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 更新觸發.
-- 正確的使用.
INSERT INTO B
SELECT
inserted.aid,
inserted.money - deleted.money
FROM
inserted, deleted
WHERE
inserted.AID = deleted.AID;

-- 不正確的使用.
SELECT @aid = aid, @money = money FROM inserted;
SELECT @money = @money - money FROM deleted;
INSERT INTO C VALUES ( @aid, @money);
END;

IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 刪除觸發
-- 正確的使用.
INSERT INTO B
SELECT
deleted.aid,
0 - deleted.money
FROM
deleted;

-- 不正確的使用.
SELECT @aid = aid, @money = 0 - money FROM deleted;
INSERT INTO C VALUES ( @aid, @money);
END;
END;
go

-- 一條SQL語句,插入一條數據
INSERT INTO A VALUES (100);

-- 一條SQL語句,插入多條數據
INSERT INTO A
SELECT 10
UNION ALL SELECT 20;
GO

-- 一條SQL語句,更新一條數據
UPDATE A SET money = money - 50 WHERE AID = 1;

-- 一條SQL語句,更新多條數據
UPDATE A SET money = money + 50 WHERE AID != 1;
GO

-- 一條SQL語句,刪除一條數據
DELETE FROM A WHERE AID = 1;

-- 一條SQL語句,刪除多條數據
DELETE FROM A WHERE AID != 1;
GO

SELECT * FROM B
GO
BID AID money
----------- ----------- -----------
1 1 100
2 3 20
3 2 10
4 1 -50
5 3 50
6 2 50
7 1 -50
8 3 -70
9 2 -60

(9 行受影響)

SELECT * FROM C
go
CID AID money
----------- ----------- -----------
1 1 100
2 2 10
3 1 -50
4 2 30
5 1 -50
6 2 -60

(6 行受影響)

這里, AID = 3 的數據,沒有被觸發器處理。

⑥ sql 刪除 子查詢返回的值不止一個

能給更多的信息嗎,單從sql看是沒有問題的,可以執行啊

⑦ sql 子查詢返回的值不止一個怎麼解決

問題就出在你這句:

(select@moneyfromMoney)

這句的查詢結果是money表裡有多少條記錄,就有多少個結果,你就直接:

updateMoneysetmoney=money+@moneywhereSname=@Sname

是這個意思嗎?

⑧ SQL語句,子查詢返回的值不止一個。

select * from flight_now
where 機號 in (select jh from jh where flight_now.機號 != jh.jh)
這樣就可以了

⑨ 子查詢返回的值不止一個。當子查詢跟隨在 =、!=、<、<=、>、>= 之後,關於觸發器SQL語句

update 學生信息 set 就業標志='就業' where 學號 = (select 學號 from 就業信息 where 學號=@xuehao ) --感覺應該是這個裡面出問題
為什麼不直接
update 學生信息 set 就業標志='就業' where 學號 =@xuehao

⑩ sql 子查詢 子查詢返回的值不止一個。這種情況是不允許的。 請問如何解決

可以用 in 或not in 來查詢格式select * from xx where 欄位 in(select (只能一個)欄位 from x x where 欄位<=xx)