快快,一個簡單問題在綫等!!!(100分)

  • 主题发起人 主题发起人 caomm1982
  • 开始时间 开始时间
C

caomm1982

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQLSERVER2000的存儲過程中,我想拼湊一個sql語句(主要是拼湊where語句),然後執行這個語句把查詢結果放到一個臨時表當中,該怎麽寫?

設表person 字段 id int name varchar
存儲過程名sp_person
存儲過程中建的零時表: @tempTable
按參數 @id,@name 查詢,謝謝,請寫算法
 
--用exec来执行SQL语句,可参考如下:
use pubs
declare @sql nvarchar(2000)
set @sql='select * from authors where 1=1 '
set @sql=@sql+' and (state = ''CA'') '
set @sql=@sql+' and (contract = 1) '
exec(@sql)
 
需要用到存储过程吗?
DECLARE @id int
DECLARE @name varchar
SELECT * INTO #tempTable FROM person WHERE id = @id AND name = @name
 
to djrj ,使用你這種方法時候@sql中如果包含變量就會報錯
to sjz_no1,你這種方法沒有動態組合sql語句,因爲查詢條件的不同組合我的SQL 語句是變化的
 
如果参数@Id为零,则表示使用@Name为查询条件,否则使用@Id作为查询条件
Select * Into @TempTable From Person Where (@Id > 0 AND Id = @Id) OR (@Id = 0 AND Name = @Name)
 
感謝毛主席!提供一個思路。
但是就沒有動態組合sql語句的一個好的辦法嗎?
 
To caomm1982:
楼主可以提出一个实际问题,我们共同分析一下。
 
其實我就是想用djrj的方法,但是能否在@sql中放入變量
 
use pubs
declare @sql nvarchar(2000)
set @sql='select * from authors where 1=1 '
set @sql=@sql+' and (state = ''' + @statevalue + ''') '
set @sql=@sql+' and (contract = 1) '
exec(@sql)

可以类似这样呀
 
呵呵,還是揭帖吧,謝謝了。
 
后退
顶部