Главная страница
    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
15-1249503149
TIF
2009-08-06 00:12
2009.11.29
PHP на хостинге с FreeBSD: глюки или чиь-то кривые руки?


4-1223552958
тимохов
2008-10-09 15:49
2009.11.29
Как снять метрики (размеры) элементов Radio button а,


2-1255402700
Lucia
2009-10-13 06:58
2009.11.29
Подскажите компонент для отчета с возможностью редактирования гот


15-1254145778
Piter
2009-09-28 17:49
2009.11.29
Реализация принципов tag ов (ключевых слов)


15-1253862387
Ирг
2009-09-25 11:06
2009.11.29
запрос SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский