Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.981 pregleda

Najnovija ↓

MS SQL Cursor insert u @tablica 17.03.2011. u 09:36 · pre 190 meseci #1
Dragi kolege trebam pomoć.
Naime imam potrebu koristi cursor za jedan problem koji prebrojava rekorde te koji bi to sve trebao zapisat u novu varijablu @tablica...ali nikako mi ne uspijeva.
kako izgleda code:

ALTER function [dbo].[test4]()
returns @TESTNA_TABLICA table
(
ime nvarchar(255),
prezime nvarchar(255),
ustrojId nvarchar(50)
)

as
begin
--INSERT INTO @TESTNA_TABLICA
declare osoblje_cursor cursor -- deklariram kursor
read_only
for SELECT
ime,
prezime,
ustrojId
FROM dbo.osoblje

declare --upisujem vrijednosti iz krusora
@ime nvarchar(255),
@prezime nvarchar(255),
@ustrojId nvarchar(50)

open osoblje_cursor

WHILE @@FETCH_STATUS = 0

BEGIN

fetch osoblje_cursor
insert into @TESTNA_TABLICA (ime, prezime, ustrojId)values (
@ime,
@prezime,
@ustrojid )
--PRINT @ime + ' ' + @prezime + ' ' + @ustrojid
return
END
close osoblje_cursor
DEALLOCATE osoblje_cursor
return
end

greska koju mi javlja:
Msg 444, Level 16, State 2, Procedure test4, Line 34
Select statements included within a function cannot return data to a client.

problem je u tome ako promijenim ovaj dio
fetch osoblje_cursor
insert into @TESTNA_TABLICA (ime, prezime, ustrojId)values (
@ime,
@prezime,
@ustrojid )
u fetch osoblje_cursor into
@ime,
@prezime,
@ustrojid
tada ne dobim gresku ali kad startam funkciju dobim praznu tablicu...HELP!!
Re: MS SQL Cursor insert u @tablica 17.03.2011. u 10:18 · pre 190 meseci #2
Probaj prvo da upišeš podatke u promenljive
pa onda da uneseš te podatke u tabelu

fetch osoblje_cursor into
@ime,
@prezime,
@ustrojid

insert into @TESTNA_TABLICA (ime, prezime, ustrojId)values (
@ime,
@prezime,
@ustrojid )

Lično ne volim kursore jer su "skupi".
Ne razumem problem, ali verujem da može da se reši i bez kursora.
Pozdrav
Re: MS SQL Cursor insert u @tablica 17.03.2011. u 10:24 · pre 190 meseci #3
hvala puno...evo uspio sam dobit zeljeni rezultat

open osoblje_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
insert into @TESTNA_TABLICA
SELECT
ime,
prezime,
ustrojId
FROM dbo.osoblje
fetch osoblje_cursor into
@ime,
@prezime,
@ustrojid
Re: MS SQL Cursor insert u @tablica 17.03.2011. u 10:34 · pre 190 meseci #4
A zasto ne moze:

INSERT INTO @TESTNA_TABLICA (ime, prezime, ustrojId) SELECT ime, prezime, ustrojId FROM dbo.osoblje

??

Ako treba da prebrojis zapise lakse ces uraditi sa SELECT @tablica = COUNT(nesto) FROM nestoDrugo...

Mislim da ti ne treba kursor za ovo, i ako ikako mozes da izbegnes upotrebu kursora (a mozes u 90% slucajeva) do it ;)
Potpis
Every hamster has his day.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme