Я думаю, вы должны использовать что-то вроде этого, и оно называется Upcasting:
public int multiplyBy2(int x) throws ArithmeticException {
long result = 2 * (long) x;
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE){
throw new ArithmeticException("Integer overflow");
}
return (int) result;
}
Здесь вы можете прочитать далее: Обнаружение или предотвращение переполнения целого числа
Это довольно надежный источник.
INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'
Для SQL Server 2008 это возможно в одном предложении VALUES ровно в соответствии с утверждением в вашем вопросе (вам просто нужно добавить запятую, чтобы отделить каждый оператор значений) ...
Вы можете использовать объединение:
INSERT INTO dbo.MyTable (ID, Name)
SELECT ID, Name FROM (
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'
) AS X (ID, Name)
Это выглядит нормально для SQL Server 2008. Для SS2005 и более ранних версий вам нужно повторить оператор VALUES.
INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy')
VALUES (124, 'Jonny')
VALUES (125, 'Sally')
РЕДАКТИРОВАТЬ :: Моя плохая. Вы должны повторить «INSERT INTO» для каждой строки в SS2005.
INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy')
INSERT INTO dbo.MyTable (ID, Name)
VALUES (124, 'Jonny')
INSERT INTO dbo.MyTable (ID, Name)
VALUES (125, 'Sally')
Если ваши данные уже находятся в вашей базе данных, вы можете сделать:
INSERT INTO MyTable(ID, Name)
SELECT ID, NAME FROM OtherTable
Если вам нужно жестко закодировать данные, то SQL 2008 и более поздние версии позволяют вам сделать следующее...
INSERT INTO MyTable (Name, ID)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)
Вы можете сделать это (уродливо, но работает):
INSERT INTO dbo.MyTable (ID, Name)
select * from
(
select 123, 'Timmy'
union all
select 124, 'Jonny'
union all
select 125, 'Sally'
...
) x
Ваш синтаксис почти работает в SQL Server 2008 (но не в SQL Server 2005 1 ):
CREATE TABLE MyTable (id int, name char(10));
INSERT INTO MyTable (id, name) VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe');
SELECT * FROM MyTable;
id | name
---+---------
1 | Bob
2 | Peter
3 | Joe
1 Когда был дан ответ на вопрос, не было очевидно, что вопрос имел в виду в SQL Server 2005. Я оставляю этот ответ здесь, поскольку считаю, что он по-прежнему актуален.
Соответствующий INSERT (Transact-SQL) (SQL Server 2005) вы не можете опустить INSERT INTO dbo.Blah
и должны указывать его каждый раз или использовать другой синтаксис/подход,