PDA

View Full Version : add variable column



parvane_58
شنبه 24 فروردین 1387, 09:46 صبح
من میخواهم به یک جدول ایجاد شده تعدادی ستون اضافه کنم که نام آنها را از یک جدول دیگر میخوانم ولی از متغییر بودن نام ستون ایراد میگیرد.
ALTER TABLE Tbl_MarkList_M ADD @Less_Code nvarchar(10) NULL
:عصبانی++:

amirzazadeh
شنبه 24 فروردین 1387, 12:03 عصر
من میخواهم به یک جدول ایجاد شده تعدادی ستون اضافه کنم که نام آنها را از یک جدول دیگر میخوانم ولی از متغییر بودن نام ستون ایراد میگیرد.
ALTER TABLE Tbl_MarkList_M ADD @Less_Code nvarchar(10) NULL
:عصبانی++:
کد رو به این صورت بنویسین


ALTER TABLE Tbl_MarkList_M ADD [@Less_Code] nvarchar(10) NULL

parvane_58
شنبه 24 فروردین 1387, 12:59 عصر
با تشکر از توجه شما.
ولی این کار فقط باعث میشود که sql نام ستون را معادل چیزی که داخل کروشه قرار دهد یعنی نام ستون را @Less_Code میگذارد ولی منظور من این بود که نام ستون در این متغییر قرار دارد و نام ستون در واقع dynamic تعیین شود.

amirzazadeh
شنبه 24 فروردین 1387, 13:12 عصر
با تشکر از توجه شما.
ولی این کار فقط باعث میشود که sql نام ستون را معادل چیزی که داخل کروشه قرار دهد یعنی نام ستون را @Less_Code میگذارد ولی منظور من این بود که نام ستون در این متغییر قرار دارد و نام ستون در واقع dynamic تعیین شود.
ببین این تاپیک به دردت میخوره
http://barnamenevis.org/forum/showthread.php?t=61872&highlight=%D8%B3%D8%AA%D9%88%D9%86+%D9%85%D8%AA%D8 %BA%DB%8C%D8%B1

parvane_58
شنبه 24 فروردین 1387, 13:29 عصر
منظورم اینه که میخواهم به جدولم ستونی/ ستونهایی اضافه کنم که نام آنها از جدول دیگری select میشود و با استفاده از cursor داخل متغییری به نام @Less_Code ریخته میشود و میخواهم این ستون متغییر به جدولم اضافه شود.



CREATE PROCEDURE [aa]
@SchdRoom_Id[int],
@Course_Id[int]
as
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Tbl_MarkList_M]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Tbl_MarkList_M]
CREATE TABLE [Tbl_MarkList_M](rad int,StdCode nvarchar(50),StdName nvarchar(50))
Declare @rad int,@Std_Id int,@StdName nvarchar(50),@N19 nvarchar(5),@C19 int,@N18 nvarchar(5),@C18 int,@N17 nvarchar(5),@C17 int,@N16 nvarchar(5),@C16 int,@N15 nvarchar(5),@C15 int,@N14 nvarchar(5),@C14 int,@N13 nvarchar(5),@C13 int,@N12 nvarchar(5),@C12 int,@N11 nvarchar(5),@C11 int,@N10 nvarchar(5),@C10 int,@N9 nvarchar(5),@C9 int,@N8 nvarchar(5),@C8 int,@N7 nvarchar(5),@C7 int,@N6 nvarchar(5),@C6 int,@N5 nvarchar(5),@C5 int,@N4 nvarchar(5),@C4 int,@N3 nvarchar(5),@C3 int,@N2 nvarchar(5),@C2 int,@N1 nvarchar(5),@C1 int,@avg_m nvarchar(5)
Declare @Selection int
Declare @Less_Code varchar(50)
set @Selection=1
declare Tbl_MarkList cursor for
Select Less_Code from p where Course_Id=@Course_Id and SchdRoom_Id=@SchdRoom_Id order by SchdTerm_Id,Course_Id,SchdRoom_Id,SchdLess_Id
open Tbl_MarkList
While @Selection=1
Begin
FETCH NEXT from Tbl_MarkList INTO @Less_Code
if @@FETCH_STATUS =-1 Goto ExitCursor
PRINT @Less_Code + '_'
ALTER TABLE Tbl_MarkList_M ADD [@Less_Code] nvarchar(50) NULL
end
ExitCursor:
close Tbl_MarkList
Deallocate Tbl_MarkList
GO

amirzazadeh
یک شنبه 25 فروردین 1387, 08:38 صبح
یک نمونه توی code project دیدم لینکشو برات میذارم امیدوارم به دردت بخوره
عنوان مقاله Dynamic Sql In a Stored Procedure

http://www.codeproject.com/KB/database/Building_Dynamic_SQL.aspx