Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
Посоветуйте как быть! каким образом реализовать ХП с переменным числом входных парметров причем кол-во переменых теоретически может варьировать от 0 до скажем нескольких десятков, т.е. их все объявлять глупо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2002, 11:44 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
Подсказываю....Можно создать таблицу и из нее брать записи, как данные, изнутри процедуры.... Подходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2002, 13:11 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
<input type=checkbox name=v value=1>один <input type=checkbox name=v value=2>два <input type=checkbox name=v value=3>три количество их может быть разным и в процедуру будут передаватся только отмеченные - тоже не известно какие отмечены какие нет. --- дык вот как передать то их ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2002, 13:18 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
впринципе в процедуру можно отправить это дело как один параметр("1,2,3"), но как его распарсить в процедуре понятия не имею (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2002, 13:21 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
В форуме уже обсуждалась такая проблема. Можно действительно передавать параметры как строку и написав соотвутствующую UDF-функцию вытаскивать из нее параметры, или же прямо в клиенте генерить скрипт примерного содержания: <code> create table #Params(ParamName varchar(20) not null primary key, ParamValue varchar(50) not null) -- Здесь прямо из клиента в скрипт заполняются параметры insert into #Params (ParamName, ParamValue) values ('Param1', '1') insert into #Params (ParamName, ParamValue) values ('Param2', '2') -- и т.д. exec sp_Proc_User drop table #Params </code> Соответствующе из хранимой процедуры спокойно можно получить значения параметров из таблицы #Params (естественно ее структуру надо модернизировать под собственные нужды). Клиенту же достаточно сгенерить такую строку и просто выполнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2002, 14:01 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
Почему не вызвать процедуру столько раз, сколько параметров? Типа этого: create proc my_sp @param int as ... ... а в приложении в рамках транзакции (например, через ADO Connection.BeginTrans и т.п.) не вызвать my_sp нужное число раз? Тем более, что у вас простейший случай. А что будет, если потребуется сделать что-то более-менее сложное для каждого значения v? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2002, 21:33 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
Подскажите плиз где можно почитать об UDF как их писать посмотрел в книжке Мамаева - что-то негусто написано, да и набор функций работы со строками что-то не впечатляет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2002, 05:44 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
2Perez Об UDF можно почитать в Books Online, что поставляются вкупе с MS SQL Server. Также есть неплохой ресурс sqlteam.com Что касается "распарсить в процедуре": \nCREATE FUNCTION dbo.ItemsList ( @InputString varchar(4096), @Separator char(1) ) RETURNS @MyTable TABLE (MyTableID int) AS BEGIN DECLARE @i int SET @InputString = @InputString + @Separator SET @i = CHARINDEX(@Separator, @InputString) WHILE @i > 0 begin INSERT INTO @MyTable (MyTableID) SELECT CAST(SUBSTRING(@InputString, 1, @i-1) AS int) SET @InputString = RIGHT(@InputString, LEN(@InputString) - @i) SET @i = CHARINDEX(@Separator, @InputString) end RETURN END GO SELECT * FROM ItemsList('1,2,3',',') GO Ессно, предполагается, что передаются только "целые" числа, разделенные одним символом (@Separator), причем общей длиной не более 4 кБ. Обработку ошибок надо сделать самостоятельно. P.S. И все-таки, парсинг строк - не самый лучший вариант решения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2002, 07:30 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
да! здорово! спасибо! подходит )) а неуж то нет какой-нить готовой процедуры или функции типа как вбскрипте SPLIT? - и почему парсинг не лучший вариант? (это из-за того что нада обрабатывать ислючительные ситуации?) я в том плане чтоб совсем разделить веб и данные/методы_обрабоки_данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2002, 08:23 |
|
||
|
по поводу входных параметров для хранимой процедуры
|
|||
|---|---|---|---|
|
#18+
а неуж то нет какой-нить готовой процедуры или функции типа как вбскрипте SPLIT? В T-SQL нет массивов (таблицы не считаем), потому вернуть результаты будет негде, в отличие от VBScript. и почему парсинг не лучший вариант? (это из-за того что нада обрабатывать ислючительные ситуации?) я в том плане чтоб совсем разделить веб и данные/методы_обрабоки_данных Это тебе кажется, что ты разделяешь. На самом деле, ты соединяешь. Посмотри сам: в процедуру передается символ-разделитель, а он есть "часть" логики представления (presentation logic). А надо бы, чтобы в проц. шли независимые от интерфейсов данные, то бишь числа, даты (во внутреннем формате, ессно), строки... Потому все потуги передавать в SP данные в виде строк (даты, например) и далее их парсить - порочны априори. Мне могут возразить, что в описанном мной варианте надо использовать транзакцию, лежащюю вне хранимых процедур. Это единственный минус... Кстати, он будет и для способа, когда набор параметров передается через (временную) таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2002, 09:13 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1822864]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
131ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 482ms |

| 0 / 0 |
