Ta sama zmienna, ale w innej instrukcji.

0

Cześć,

W jaki sposób poprawnie zapisać coś w stylu ? [MS SQL 2005]

DECLARE @a INTEGER
EXEC( ' SELECT @a = cos FROM .. ' )
PRINT(@a)

Rozumie dlaczego to nie działa, ale nie mam pojęcia jak poprawić ten kod.

0

o cos takiego Ci chodzi?


EXEC
(
	'declare @a int ' + 
	'select @a= 10 ' + 
	'print cast(@a as varchar)'
)

0

Wolałbym uniknąć zamknięcia całości w EXEC, bo musiałbym mieć EXEC w EXEC.

Jest jakiś inny sposób na to ?

0

tabele tymczasowe? funkcje? procedury?
Opisz problem jaki masz do rozwiazania.
Ps w wersji MS SQL od 2008 masz operatory zlaczenia CROSS APPLY
mozesz napisac inline scalar function.

0

Czymś analogicznym co chciałbym zrobić to napisanie funkcji obliczającej liczbę wierszy:
Argumentem funkcji byłaby Kwerenda ( czyli VARCHAR(MAX) ).

0

OPENROWSET

0

Mógłbyś napisać przykład funkcji do wyznaczenia liczby wierszy (o argumencie @KWERENDA) ?

0

Ale czemu FUNKCJĘ chcesz uruchamiać przez EXEC?? I funkcja z reguły zwraca jakąś wartość...

0

Nie mówię, że chcę przez uruchomić funkcję przez EXEC.
Myślę, że w funkcji trzeba skorzystać z EXEC.

Nie wiem jak dlatego napisałem posta.

0
CREATE PROCEDURE CountData(@SQL VARCHAR(MAX))
AS
BEGIN
	EXEC(
			' SELECT ' + 
			'   COUNT(*) ' + 
			' FROM ' + 
			'   ( ' + @SQL + ') X '
		)

END;

A uzycie

CountData 'SELECT * FROM sys.tables'

Tylko po co? :)
Jak dla mnie to niezly "przeszczep" cos takiego.
A datasource w Twojej aplikacji nie udostepnia tego? counta?

0

Teraz sobie przypomniałem, bo dawno MS SQL nie używałem... Ma przecież zmienną systemową @ @ ROWCOUNT - http://msdn.microsoft.com/en-us/library/ms187316.aspx. Można ją użyć np. tak: SELECT * FROM tabela SELECT @@ROWCOUNT
Zwróci wtedy dwa recordsety, w którym ten drugi będzie miał tylko jeden wierss i jedną kolumnę - właśnie ilość rekorrdów.

pozdrawiaMM
EDIT: Dwie małpy włączają kursywę?? :)

0

Niektore kontrolki nie akceptuja wielu datasetow i czytaja tylko pierwszy.
PS uzywajac @@ROWCOUNT DTS musi przeslac caly resultset do klienta.
Jesli beda to duze resultsety to mozna odczuc roznice.

1 użytkowników online, w tym zalogowanych: 0, gości: 1