Форум: "Базы";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Внизбез sp_executeSQL не обойтись? Найти похожие ветки
← →
interbase (2008-12-24 16:13) [0]Всем доброго времени суток!
есть процедурка(MS SQL Server 2005):
CREATE PROCEDURE aaa(@a VARCHAR(1000))
AS
BEGIN
SELECT *
FROM table
WHERE id IN (@a)
END
вызов execute aaa "1,2,3,4"
так не работает... не ругается, но и не делает выборку. Без executeSQL никак?
← →
Медвежонок Пятачок © (2008-12-24 16:19) [1]where patindex(cast(id as varchar),@a) > x
← →
Ega23 © (2008-12-24 16:22) [2]
> cast(id as varchar)
Я не знаю как в 2005, но я бы добавил cast(id as varchar(max))
В 2000 это воспринималось по-умолчанию как varchar(32)
← →
Медвежонок Пятачок © (2008-12-24 16:22) [3]ну да. там просто общая идея как наколоть судьбу
← →
Johnmen © (2008-12-24 16:26) [4]
> Медвежонок Пятачок © (24.12.08 16:19) [1]
А что такое x?
← →
Медвежонок Пятачок © (2008-12-24 16:27) [5]это то, чего должно быть больше патиндекс.
если не найдено, то не помню что там вертается. ноль или минус один.
← →
interbase (2008-12-24 16:28) [6]
> Медвежонок Пятачок © (24.12.08 16:19) [1]
спасибки! Тока %-тами надо окружить.
← →
Johnmen © (2008-12-24 16:29) [7]
> Медвежонок Пятачок © (24.12.08 16:27) [5]
Чему соответствует x в вопросе автора?
И как быть с id=7 и @a="33,77"?
← →
Медвежонок Пятачок © (2008-12-24 16:29) [8]лучше все айди не просто кастить а приклеивать слева справа загогулины.
для случая вроде такого
id = 1
@a = "11,12,12"
← →
Медвежонок Пятачок © (2008-12-24 16:30) [9]ну блин, сказал же что там просто идея.
← →
sniknik © (2008-12-24 16:34) [10]можно и не окружать, а использовать charindex вместо, но вот добавить в искомое запятую и ее же добавить к конце строки необходимо... иначе с такой например строкой "1,22,33,4" будут нежелательные результаты в виде 2, 3.
← →
interbase (2008-12-24 16:35) [11]
> Медвежонок Пятачок © (24.12.08 16:30) [9]
а как насчет идеи для:
declare @s varchar
set @s = "MySuperBase"
use @s
?
Очень надо!
← →
sniknik © (2008-12-24 16:36) [12]> приклеивать слева справа загогулины.
уже есть, запятая
where charindex(cast(id as varchar)+",",@a) > 0
← →
sniknik © (2008-12-24 16:39) [13]и кстати нужно две... обрамляющие, а то с одного конца тоже будут непонятности...
← →
Johnmen © (2008-12-24 16:40) [14]
> sniknik © (24.12.08 16:36) [12]
id=7, @a="77,88"
?
← →
Johnmen © (2008-12-24 16:43) [15]
> sniknik © (24.12.08 16:39) [13]
Остается надеяться, что не буде 4, 5, 6, 7
:)
← →
interbase (2008-12-24 16:46) [16]
> Johnmen © (24.12.08 16:40) [14]
> Johnmen © (24.12.08 16:43) [15]
ответь мне, о Вопрошающий и Надеющийся, на
> interbase (24.12.08 16:35) [11]
← →
Медвежонок Пятачок © (2008-12-24 16:48) [17]в процедуре тебе сделать use один фик на дадут.
а на клиенте этого и не надо.
← →
Johnmen © (2008-12-24 16:52) [18]
> interbase (24.12.08 16:46) [16]
EXECUTE ("USE "+@s)
← →
interbase (2008-12-24 16:53) [19]
> Медвежонок Пятачок © (24.12.08 16:48) [17]
ага, ясно.
Просто есть несколько БД, идентичные по структуре, но с разными данными - почему так, вопрос не ко мне. Некоторую часть структуры можно было б вынести в отдельную БД, а данные брать из требуемой базы. Зело напрягает синхронизировать все в них:(.
Может ее(синхронизацию) автоматом можно как-то сделать?
← →
Ega23 © (2008-12-24 16:56) [20]
> Может ее(синхронизацию) автоматом можно как-то сделать?
Как-то - можно. DTS тебе в помощь.
← →
Медвежонок Пятачок © (2008-12-24 16:56) [21]и что тебе даст юз?
следущая же строка после execute("use ... ") в которой ты обратишся к объекту в той бд просто не скомпилится.
← →
sniknik © (2008-12-24 16:59) [22]> EXECUTE ("USE "+@s)
не получится, т.к. действие перехода будет только для сессии "внутри" данного EXECUTE
> а данные брать из требуемой базы.
бери...
base.dbo.table , зачем же переходить то, а если она под другим сервером, то -> openrowset/opendadasource.
← →
Johnmen © (2008-12-24 17:02) [23]
> sniknik © (24.12.08 16:59) [22]
Да, я догадываюсь :)
← →
interbase (2008-12-24 17:02) [24]
> Johnmen © (24.12.08 16:52) [18]
не работает:(
> Ega23 © (24.12.08 16:56) [20]
> Как-то - можно. DTS тебе в помощь.
что за зверь?
← →
interbase (2008-12-24 17:05) [25]
> sniknik © (24.12.08 16:59) [22]
> бери...
> base.dbo.table , зачем же переходить то, а если она под
> другим сервером, то -> openrowset/opendadasource.
так мне надо то из одной, то из другой - одной и той же процедурой
← →
sniknik © (2008-12-24 17:05) [26]> не работает:(
вообщето работает, но только не так как тебе хочется
к примеру проверь (если есть база Northwind, нет сделай аналогично)
при коннекте к примеру к мастеру
EXECUTE ("USE Northwind SELECT * FROM Categories")
все работает
← →
interbase (2008-12-24 17:07) [27]
> sniknik © (24.12.08 17:05) [26]
ну, я имел в виду не работате так, как мне надо.
← →
sniknik © (2008-12-24 17:07) [28]> так мне надо то из одной, то из другой - одной и той же процедурой
надо работать, но так хочется чуда... ;)
← →
interbase (2008-12-24 17:08) [29]
> sniknik © (24.12.08 17:07) [28]
телепатор от рождения или от посещения данного форума?:)
← →
Ega23 © (2008-12-24 17:16) [30]
> ну, я имел в виду не работате так, как мне надо.
Вот негодяйка какая!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.006 c