T-SQL: for each record ...
Добавлено: 10 авг 2009, 14:43
Можно ли (в T-SQL) обойтись без курсора если нужно , например выполнить stored procedure для каждой записи из определенной таблицы?
Имхо эти две строчки противоречат друг другу.Gadi писал(а):...обойтись без курсора...
...выполнить stored procedure для каждой записи из определенной таблицы...
А в чем противоречие? Да, сп выполняет действия в совершенно другой таблице; не вижу как природа этих действий влияет на ответ на заданный вопросpastor писал(а):Имхо эти две строчки противоречат друг другу.Gadi писал(а):...обойтись без курсора...
...выполнить stored procedure для каждой записи из определенной таблицы...
Хотя, можно по идее извратиться, используя User Defined Function. Все зависит от того, что ваша процедура делает. В принципе, курсоры -- это зло, но иногда без них никак.
Неа, базы живые и ... старыеYuri Dimant писал(а):
Нет ,неполучится, хотя если Вы испльзуете SQL Server 2008 ...
код пришли (можно в лс).... кажется мне что есть шанс это сделать просто одним инсертом буз всяких СПшек....Gadi писал(а):Неа, базы живые и ... старыеYuri Dimant писал(а):
Нет ,неполучится, хотя если Вы испльзуете SQL Server 2008 ..., управляются SQL Server 2005
В принципе для каждой записи из таблицы надо посоздавать несколько записей в другой таблице, используя значения двух полей
С курсором все работает, думал может можно "поэлегантней"
Обойтись без курсора И выполнить stored proc для каждой записи. Без перебора записей это ИМХО невозможно (по крайней мере в версиях до 2005 включительно).Gadi писал(а):А в чем противоречие?
Откуда я знаю, может вы просто значения вычисляете в своей хранимой процедуре? Поэтому нужно знать в общем что делает процедура (в данном случае информации о том, что она выполняет действия в сторонней таблице вполне достаточно), чтобы ответить на ваш вопрос, разве не так?Gadi писал(а):Да, сп выполняет действия в совершенно другой таблице; не вижу как природа этих действий влияет на ответ на заданный вопрос
В M$SQL 2005 можно на дотНет код писать, так что можно вполне и без курсора. Только будет ли это эффективней - это вопрос...Gadi писал(а): управляются SQL Server 2005
В SQL все зло, кроме Select, Insert, Delete, Update, Commit, Rollback.pastor писал(а):Имхо эти две строчки противоречат друг другу.Gadi писал(а):...обойтись без курсора...
...выполнить stored procedure для каждой записи из определенной таблицы...
Хотя, можно по идее извратиться, используя User Defined Function. Все зависит от того, что ваша процедура делает. В принципе, курсоры -- это зло, но иногда без них никак.
SQL сам по себе злоLeo Gan писал(а): В SQL все зло, кроме Select, Insert, Delete, Update, Commit, Rollback.
Все остальное из эпохи динозавров