看板 Database 關於我們 聯絡資訊
※ 引述《pabeni (真兒)》之銘言: : 問題困擾很久... ... : 也有好心的大大幫我指點迷津... : 不過資質駑鈍... : 還請各位豪傑, 給我一點建議... : 問題是這樣的~ : 要怎麼將 資料表某欄位的內容傳回給ADO端~ : 這個某欄位的內容是 "nvarchar"~~~ : 問題是這樣出現的... : 我的資料表有一個欄位叫做steplist~ : 在MFC裡面的ADO裡會讀取 一個整數, : 這個整數表示的是 資料表裡面的第幾筆資料~ : MFC將這個整數傳入SQL裡面~ : 然後得到那筆資料的steplist~~~ : 可是 steplist就是傳不回MFC那裡... : 資料表的steplist 長像大概是這樣 -1, 180, 179, 168... : 我是用SQL Server~ : 預存程序是這樣... : set ANSI_NULLS ON : set QUOTED_IDENTIFIER ON : GO : ALTER PROCEDURE [dbo].[sp_SCB] : (@InputIndex int) //從MFC那裡傳進的資料的代碼 其實就是流水號 : AS : BEGIN : declare @outsteplist nvarchar(max) : Select @outsteplist = StepList From CMR //列出steplist, : Where RecordID = @InputIndex //當MFC得到的整數 : return @outsteplist //等於 資料表的ID : END 在StoreProcedure裡面 有三種回傳的方式 return 我的印象中只能傳整數 告知此預存程序的執行結果是否成功 (有錯請前輩指正) 要回傳變數的話,可以將變數設為output形式 並且在ADO.NET處宣告SqlParameter的時候標示此參數為output 如此便可在執行完此預存程序後取得此變數的內容 大致的寫法為: SQL ================================================== ALTER PROCEDURE [dbo].[sp_SCB] ( @InputIndex int, @outsteplist nvarchar(max) output ) AS BEGIN --在此處賦值予@outsetlist END ASP.NET ================================================== SqlCommand com = new SqlCommand("sp_SCB"); com.CommandType = System.Data.CommandType.StoredProcedure; SqlParameter[] pars = new SqlParameter[2]; pars[0] = new SqlParameter("@InputIndex", 2); pars[1] = new SqlParameter("@outsteplist", SqlDbType.NVarChar); pars[1].Direction = ParameterDirection.Output; com.Parameters.AddRange(pars); com.ExecuteNonQuery(); return pars[1].Value; //對output的值做操作 如此可使用output的方法取得回傳值 ================================================================== 不過比較單純的方法其實直接在預存程序裡面 SQL ===== BEGIN Select StepList From CMR Where RecordID = @InputIndex END ASP.NET ======= SqlCommand com = new SqlCommand("sp_SCB"); com.CommandType = System.Data.CommandType.StoredProcedure; SqlParameter[] pars = new SqlParameter[1]; pars[0] = new SqlParameter("@InputIndex", 2); com.Parameters.AddRange(pars); string szResult = com.ExecuteScalar().ToString(); 直接用回傳資料行的方法取得資料就好 其實大部分向透過預存程序像資料庫要資料的時候 都是直接用Select 然後再看伺服器端要用DataSet還是用ExecuteScalar去取資料而已 以上有錯誤的地方請前輩指正 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.150.123
pabeni:先謝謝你給我的方向, ASP不等於ADO吧? 10/04 23:20
yumark:ASP和ADO是不同東西,可以拿本ASP.NET書看看幾都有講解ADO 10/05 00:11