Не используйте некоторые из приведенных выше ответов.
Некоторые предлагают использовать вложенный SELECT, не делайте этого, это мучительно медленно. Если у вас есть много записей для обновления, используйте join, поэтому что-то вроде:
update (select bonus
from employee_bonus b
inner join employees e on b.employee_id = e.employee_id
where e.bonus_eligible = 'N') t
set t.bonus = 0;
См. Эту ссылку для получения более подробной информации. http://geekswithblogs.net/WillSmith/archive/2008/06/18/oracle-update-with-join-again.aspx .
Кроме того, убедитесь, что есть первичные ключи на всех таблицах, к которым вы присоединяетесь.
Нет хорошего решения этой проблемы в PowerSHell V1. В V2 мы добавили splatting (хотя по различным причинам, мы используем вместо * с этой целью). Вот то, на что это похоже:
пз (МКС STA) (2)> функциональное нечто ($x, $y, $z) {"x: $x y: $y z: $z"}
пз (МКС STA) (3)> $a = 1,2,3
пз (МКС STA) (4)> $a нечто # передал как единственный аргумент
x:1 2 3 года: z:
пз (МКС STA) (5)> нечто @a # splatted
x:1 y:2 z:3
Ну, может быть лучший путь, но видеть, работает ли это:
inner --flag [string]::Join(" ", $args)
Основываясь на идее @EBGreen и связанном вопросе, который я заметил на боковой панели, возможное решение - это:
function outer
{
invoke-expression "inner --flag $($args -join ' ')"
}
Примечание: Этот пример использует Powershell 2.0 CTP's, новый -join
оператор.
Однако я все еще хотел бы найти лучший метод, так как это чувствует себя подобно взлому и ужасно мудрый безопасностью.