Tagi na forum.

Windows 14206 SQL Server 2132
sieci 6796 Windows XP 1922
SQL 6578 Outlook 1838
SBS 3868 Uprawnienia 1777
Windows 2003 2781 IIS 1636
Windows Server 2588 Office 1516
DNS 2315 Skrypt 1499

pokaż wszystkie tagi na forum

Wywoływanie procedury składowanej w pętli

mehatron 2010-04-21 09:59:53
0
avatar
 
 
MS SQL 2008
Panowie chodzi mi o roziązanie wywoływania dla każdego wiersza tabeli procedury składowanej. Tabela ma stanowić zbiór parametrów procedury. Przykładowo:
 
Mamy TABELĘ  TAB1
2 KOLUMNAMI (Param1, Param2)
Przykładowe wartości                   a            a
b             b
b             c
 
Procedura
 
1.) Procedura (PROC1) ma startować o określonej godzinie w nocy
nie wiem gdzie to wpisać..?
wywołuje ona dla każdego wiersza tabeli drugą procedurę PROC2
parametrami procedury PROC2 są wartośći z kolumn tabeli Param1, Param2
dla danego wiersza.
PROC1 kończy pracę jeśli napotka koniec tabeli TAB1 lub tabela TAB1 jest pusta
 
konkretnie mam na dziś taki kod w Delphi i chciałbym go całkowicie przenieśc wykorzystując programowanie po stronie serwera.
Jak należy do tego podejść.
 
Edytowano 1 raz. Ostatnio 2010-04-21 10:00:52 przez mehatron.
tagi: delphi   SQL


uzytkownik usuniety  2010-04-21 11:27:49 #1
0
avatar
 
 
1) Wywołanie procedur możesz ustawić w SQL Agencie
2) W pierwszej procedurze możesz użyć kursora który polcei po całej tabeli
i zakończy działanie jeśli tabela się skończy (dla pewności dodał bym warunek czy tabela jest pusta i jest sens uruchamiać kursor).
Do zmiennych kursora możesz przekazać 2 parametry czyli pola z Twojej tabeli i wywpołać procedurę drugą z owymi parametrami.
Optymalnością to mi to  nie pachnie ale tak to wg mnie wygląda.
A teraz google , BOL i do roboty :)
 
 --Pozdrawiam Michał
MCP,MCTS : Microsoft SQL Server 2008 -Implementation and Maintenance

bonczyk  2010-04-21 11:32:17 #2
0
avatar
 
 
i jeszcze metodą ciapkologii stosowanej :P
 



[Kod]
CREATE PROC dbo.proc1
@param1 VARCHAR(50),
@param2 VARCHAR(50)
AS
BEGIN
SELECT @param1 AS param1 , @param2 AS param2
END


CREATE PROC dbo.proc2
AS
BEGIN
DECLARE @stmt NVARCHAR(MAX) = N''
SELECT @stmt = @stmt + N'EXEC sp_executesql N''EXEC dbo.proc1 @param1 = ''''' + param1 + ''''' , @param2 = ''''' + param2 + ''''''';'
FROM dbo.Params
EXEC sp_executesql @stmt
END

EXEC dbo.proc2




mehatron  2010-04-21 14:56:39 #2.1
0
avatar
 
 
Dzięki za odzew. Mam jedynie darmowy SQL Express
Na SQL Express nie ma chyba agenta więc jak z tym uruchomieniem procedury o określonym czasie.

szelor  2010-04-21 15:03:25 #2.1.1
0
avatar Ekspert WSS
 
 
Zapisz wywołanie procedury w pliku (.sql lub .bat) i uruchamiaj ten plik za pomocą harmonogramu zadań Windows.
Do połączenia się z SQLem i wywołania procedury użyj instalowanego razem z serwerem SQL (w każdej edycji) programu wiersza polecenia sqlcmd.exe.--

---
Szelor
SQL MVP

C3PO  2010-04-21 19:28:37 #2.1.1.1
0
avatar
 
 
Albo można bardziej ambitnie podejść do tematu i zrobić sobie Agenta przy użyciu Service Brokera: http://www.sqlteam.com/article/scheduling-jobs-in-sql-server-express.

Pozdrawiam,
Paweł Potasiński
Partner Technology Advisor | Microsoft Polska 
Blog SQLGeekPLSSUG

Udziel odpowiedzi

avatar
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Idź na górę strony