PDA

View Full Version : سوال: دریافت پارامتر رشته و چسبوندن اون به کد Stored Procedures



Omid_Manam
یک شنبه 25 مرداد 1388, 11:42 صبح
سلام دوستان این کد Stored Procedures هست واسه Attach یک بانک حالا میخوام به جای این آدرس های قرمز رنگ ثابت یه آدرس به عنوان پارامتر ورودی بگیرم و جای اون بذارم . ممنون میشم کسی این کد دست کاری کنه و درستش کنه و بهم بده.


USE [master]
GO
CREATE DATABASE [ETEMAD] ON
( FILENAME = N'D:\Etemad\Database\Etemad.mdf' ),
( FILENAME = N'D:\Etemad\Database\Etemad_log.ldf' )
FOR ATTACH
GO
if not exists (select name from master.dbo.sysdatabases sd where name = N'ETEMAD' and SUSER_SNAME(sd.sid) = SUSER_SNAME() ) EXEC [ETEMAD].dbo.sp_changedbowner @loginame=N'MOHSEN\dswahbwa', @map=false
GO

البته فقط مسیر های 2 خط بالا نه چند کلمه قرمز رنگ پایین

محمد سلیم آبادی
یک شنبه 25 مرداد 1388, 12:58 عصر
داخل یک sp نمی شود از دستور GO استفاده کرد.

دو پارامتر از نوع sysname برای sp تعریف کنید و در بدنه sp از آن استفاده کنید.
مثلا FILENAME=@path

Kamyar.Kimiyabeigi
یک شنبه 25 مرداد 1388, 13:08 عصر
از execute استفاده كنين

محمد سلیم آبادی
یک شنبه 25 مرداد 1388, 13:19 عصر
این sp را امتحان کنید.


CREATE PROC SP_t
@path1 sysname,
@path2 sysname
AS
BEGIN
Declare @sqlCommand NVARCHAR(4000)
SET @SqlCommand=
'USE [master]
GO
CREATE DATABASE [ETEMAD] ON
( FILENAME = N'+@path1+' ),
( FILENAME = N'+@path2+' )
FOR ATTACH
GO
if not exists (select name from master.dbo.sysdatabases sd
where name = N[ETEMAD]
and SUSER_SNAME(sd.sid) = SUSER_SNAME() )
EXEC [ETEMAD].dbo.sp_changedbowner @loginame=N[MOHSEN\dswahbwa], @map=false
GO'
EXEC (@SqlCommand)
END





CREATE PROC SP_t
@path1 sysname,
@path2 sysname
AS
BEGIN
Declare @sqlCommand NVARCHAR(4000)
SET @SqlCommand=
'USE [master]
GO
CREATE DATABASE [ETEMAD] ON
( FILENAME = N'+@path1+' ),
( FILENAME = N'+@path2+' )
FOR ATTACH
GO
if not exists (select name from master.dbo.sysdatabases sd
where name = N''ETEMAD''
and SUSER_SNAME(sd.sid) = SUSER_SNAME() )
EXEC [ETEMAD].dbo.sp_changedbowner @loginame=N''MOHSEN\dswahbwa'', @map=false
GO'
EXEC (@SqlCommand)
END

CREATE PROC SP_t
@path1 sysname,
@path2 sysname
AS
BEGIN
Declare @sqlCommand NVARCHAR(4000)
SET @SqlCommand=
'USE [master]
GO
CREATE DATABASE [ETEMAD] ON
( FILENAME = N'+@path1+' ),
( FILENAME = N'+@path2+' )
FOR ATTACH
GO
if not exists (select name from master.dbo.sysdatabases sd
where name = [ETEMAD]
and SUSER_SNAME(sd.sid) = SUSER_SNAME() )
EXEC [ETEMAD].dbo.sp_changedbowner @loginame=[MOHSEN\dswahbwa], @map=false
GO'
EXEC (@SqlCommand)
END