Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.005 c
2-1255507339
фывфыв
2009-10-14 12:02
2009.11.29
idhttp zlib


2-1255585631
Маркабес
2009-10-15 09:47
2009.11.29
Как составить SQL запрос


15-1254256215
Юрий
2009-09-30 00:30
2009.11.29
С днем рождения ! 30 сентября 2009 среда


2-1255634244
Drowsy
2009-10-15 23:17
2009.11.29
Представление (View) и процедура выбора.


15-1254227405
istok20
2009-09-29 16:30
2009.11.29
WiMax...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский