[ lopkiju @ 07.12.2006. 19:12 ] @
Imam problem sa jednom ugnjezdenom procedurom.

Kreiram je sa ovim code-om ispod i kada uradim refresh, sp postoji u bazi, cim refreshujem aplikaciju (ASP.NET), prijavi mi Object reference not set to an instance of an object, gresku.

Vratim se u MS Server Management, uradim refresh i procedure nema...

Jel ja ludim ili ne radim nesto kako treba?

Code:

if exists(select * from dbo.sysobjects where id = object_id(N'[spForumGetNumberOfPosts]') and OBJECTPROPERTY(id, N'isProcedure') = 1)
drop procedure [spForumGetNumberOfPosts]
GO

CREATE PROCEDURE [spForumGetNumberOfPosts]
(
    @SubForumId        int
)

-- WITH ENCRYPTION

AS
begin
    select Count(*) as PostsNumber

    from posts left join threads on posts.threads_id = threads.threads_id

    where
    threads.subforums_id = @SubForumId;
end -- end spForumGetPostsNum
[ Fedya @ 07.12.2006. 21:36 ] @
NullReferenceException najverovatnije nema nikakve veze sa ovom porcedurom. Izdebagiraj kod, najverovatnije negde ti fali "new". Da je problem sa procedurom dobio bi SqlException.
[ lopkiju @ 07.12.2006. 22:18 ] @
Uzeo sam sql iz procedure i izvrsio i sve radi OK.

Ima jos jedna zanimljivost.
Kada promenim ime procedure, onda radi.

[spForumPost] - radi
[spForumGetNumberOfPosts] - ne radi

Ako neko ima ideju sta uraditi, ne menja mi se ime procedure, jer mi odskace od ostalih.
[ lopkiju @ 08.12.2006. 23:00 ] @
Reseno, falio GO posle svake procedure...

Koja glupava greska...
[ adopilot @ 12.12.2006. 18:13 ] @
Kada smo kod ovog problema,

kaku u uskladištenu proceduru ubaciti komandu GO

Radi se o tome da ima jednu uskladištenu proceduru sa jednim parametrom
koja radi 3 žestoke galerije te puni i prazni pojedine tablice,
Koji mi je najbolji način da optimiziram tu proceduru,

Pokušavao sam ubaciti riječ GO poslije svake Galerije da sgl bar malo lakše to progura ali onda kada krenem izvršiti skriptu za ipdate procedure
SQl mi baš puca na GO jer on misli da tu treba završiti update procedure.

Da li će uopšte riječ GO pomoći SQl-u da se manje pati kod izvršenja te skripte ?
HVALA
[ Fedya @ 13.12.2006. 07:58 ] @
GO uopste nije kljucna rec sql-a, i ne moze se upisati u storovanu. Po defaultu, vecina alata za sql skripte (kao Query Analyzer) skripte izvrsavaju transakciono, a kljucna rec GO im govori da treba da commituju prethodnu transakciju. Isti efekat (u porceduri) mozes postici kljucnim recima Begin Transaction i Commit Transaction na pocetku i kraju bloka.

Citat:
adopilot: Da li će uopšte riječ GO pomoći SQl-u da se manje pati kod izvršenja te skripte ?


Ako imas puno intervencija na tabelama u jednoj skripti razdvajanje na vise transakcija ce i tek kako da pomogne, posto server pravi manje rollback logove.

[Ovu poruku je menjao Fedya dana 15.12.2006. u 11:55 GMT+1]