PDA

View Full Version : مشکل در اجرای دستورات transact-sql برای ساخت procedure



m.yazdian
یک شنبه 16 تیر 1387, 09:22 صبح
با سلام
من میخوام یک سری دستورات رو که مر بوط به ساخت تعدادی Procedur میشود رو در یک فایل مثلا Procedur.sql ذخیره کنم و این فایل رو توسط StreamReader در net. بخونم و در یک sql command اونو Execute کنم.
در اجرای این دستورات اگر بجای Procedur بخوام Table بسازم و یا Database جدید و یا کار دیگری مشکلی ندارم :-^ اما برای ساخت Procedure ( چندین ) پشت سرهم مشکل دارم نمونه فایل Procedur.sql را اینجامیزارم خوشحال میشم اگر کسی بتونه کمکم کنه .
راستی مشکل با گزاشتن GO در بین Procedure هاحل نمی شه!!!
در صورت امکان به این آدرس میل بزنیدm.programer@gmail.com
باتشکر...:)^-



CREATE PROCEDURE [Select_Authenticate]
(@username varchar(50) , @password varchar(50))
AS
select * from tblmanagers where( [uname]=@username AND [pass]=@password )

CREATE PROCEDURE [Select_Existing]
(
@column nvarchar(50),
@table nvarchar(50),
@key nvarchar(50)
)
AS
declare @strsql nvarchar(500)
set @strsql='select '+ @column +' from '+ @table +' where '+ @column +'=N'''+ @key +''''
exec sp_executesql @strsql

CREATE PROCEDURE [Select_Gallery]
(
@parent int
)
AS
declare @name nvarchar(50)
select @name = (select menu from tblgallerygroup where id = @parent)
select * from tblgallery where name = @name

CREATE PROCEDURE [Select_News]
(
@parent int,
@permission int
)
AS
declare @groupid nvarchar(50)
select @groupid = (select groupid from tblnewsgroup where id = @parent)
select * from tblnews where groupid = @groupid and permission <= @permission

CREATE PROCEDURE [Select_Pages]
(
@parent int
)
As
declare @id int
select @id = (select id from tblpages where id=@parent)
select * from tblpages where id = @id

CREATE PROCEDURE [Update_MailNews]
(@title nvarchar(50) , @body ntext)
AS
update tblMailNews set body=@body where title=@title

CREATE PROCEDURE [Active_FAQ]
(@email nvarchar(50) , @active nvarchar(50))
AS
update tblFAQ set active=@active where email=@email

CREATE PROCEDURE [Active_MailNews]
(@stablish nvarchar(50) , @title nvarchar(50))
AS
update tblMailNews set stablish=@stablish where title=@title

CREATE PROCEDURE [Active_page]
(@name nvarchar(50))
AS
update tblpages set active='<img src="../icon/cross.gif">'
update tblpages set active='<img src="../icon/tick.gif">' where name = @name
update tblregister set homepage = @name

CREATE PROCEDURE [Active_Skin]
(@name nvarchar(50))
AS
update tblskin set stablish=0
update tblskin set stablish=1 where name=@name

CREATE PROCEDURE [Active_User]
(@parametr nvarchar(50) , @email nvarchar(50))
AS
update tblMailingList set active=@parametr where email=@email

jeus
یک شنبه 16 تیر 1387, 12:59 عصر
دوست من آیا پروسیجرت همینجوری توی MSSQL اجرا میشه ؟

m.yazdian
یک شنبه 16 تیر 1387, 13:10 عصر
از توجه شما تشکر می کنم.:چشمک:
بله ضعثقغ مربوط به Pricedure مشکلی نداره زمانی که می خوام چند تا Procedure رو از یک فایل بخونه و اجرا کنه البته توی net. اوموقه این Error رومیده.http://66.197.163.222/stream/error.jpg

m.yazdian
دوشنبه 17 تیر 1387, 11:44 صبح
از افرادی که کمک می کنند تشکر می کنم.
من خیلی با این موضوع در گیرم اگر فردی نظر خاصی دارد لطفا عنوان کنه ممنون میشم.
من این راه به نظرم رسید که در مورد بیشتر Procedure ها جواب میده ولی مشکل اینجاست که راه علمی نیست و اگر در کنار دیگر Query ها دستورات دیگی چون ساخت Table و... باشد در طول یک سطر به مشکل بر میخوریم.

بله یک سطر :
اگر هر دستور را دریک سطر به طور کامل بنویسیم بطور مثال

Create Procedure gholi1 AS select * from tbluser
Create Procedure gholi2 AS select * from tbluser
Create Procedure gholi3 AS select * from tbluser
Create Procedure gholi4 AS select * from tbluser

فقط کافی تو NET. اونو با Streamreader خط به خط بخونیم و اجرا کنیم.

اگر کسی راه حل دیگه ای داره لطفا پیشنهاد بده.
با تشکرhttp://www.p2p.dotnetsource.com/images/emoticons/24.gif

hdv212
دوشنبه 17 تیر 1387, 12:03 عصر
مشکل شما با همون GO حل میشه، شما باید تمام دستورات رو به صورت BatchCommand اجرا کنی، در غیر اینصورت Sql Server فکر میکنه که خطوط بعد هم ادامه ی Procedure اول شماست، به خاطر همین به شما Error میده.