none
預存程式(SP)使用問題 RRS feed

  • 問題

  • 1.預存程式裡有用到 select * from teable where [passwd]=@password,想問欄位名稱前後代中括號的用意?

    2.預存程式DEclare @str varchar (200) 宣告變數,  set @str="select............." ,為了除錯,如何把 @str 值顯示出螢幕來,譬如有類似MessageBox.Show函數可使用嗎? 謝謝幫忙

    2016年2月23日 上午 01:20

解答

所有回覆

    1. 中括號是用來表示資料庫物件或屬性中有包含保留字或特殊字元所使用。
    2. 你可以用PRINT或SELECT來查看變數的內容。

    | SQL PASS Taiwan Page | SQL PASS Taiwan Group

    | My Blog

    2016年2月23日 上午 02:00
    版主
    1. 中括號是用來表示資料庫物件或屬性中有包含保留字或特殊字元所使用。
    2. 你可以用PRINT或SELECT來查看變數的內容。

    | SQL PASS Taiwan Page | SQL PASS Taiwan Group

    | My Blog

    1.意思是說passwd欄位裡面的值有可能是保留字或特殊字元 2.我在預存程式用 print @str or print(@str )都沒作用? 
    2016年2月23日 上午 03:39
  • 1. no, use [] if column name has special character or reserve word.

    2. did you put print @str after set @str ...?

    2016年2月23日 上午 04:06
  • 1. no, use [] if column name has special character or reserve word.

    2. did you put print @str after set @str ...?

    1.是說怕 passwd  欄為名稱會是一個特殊字元或保留字所以要用 [] ,可是 passwd 在系統裡並不是阿? 

    2. 先 set @str= 'select ...'  再 print @str  謝謝您

    2016年2月23日 上午 04:17
  • 1. if column name has special character or reserve word, must use []. Otherwise [] is optional, can use it in any case.
    2. can you post whole script?
    2016年2月23日 下午 01:17
  • 1. if column name has special character or reserve word, must use []. Otherwise [] is optional, can use it in any case.
    2. can you post whole script?

    因為發生在sql 直接下select 明明有那筆帳密,在預存程式裡卻都抓不到所以要查看 select 的內容

    EXEC Login_user 'yen','1234'

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO ALTER PROCEDURE [dbo].[Login_user] ( @UId nvarchar(40), @Password nvarchar(40) ) as Begin Set Nocount On DEclare @str as varchar (200)

    print char(@Password); select * from Usertab where UserId=@UserId And [Password]=@Password; set @str = 'select * from Usertab where UId=@UId And [Password]"'+'"@Password'; print @str; End


    2016年2月24日 上午 12:46
  • 1. if column name has special character or reserve word, must use []. Otherwise [] is optional, can use it in any case.
    2. can you post whole script?

    因為發生在sql 直接下select 明明有那筆帳密,在預存程式裡卻都抓不到所以要查看 select 的內容

    EXEC Login_user 'yen','1234'

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO ALTER PROCEDURE [dbo].[Login_user] ( @UId nvarchar(40), @Password nvarchar(40) ) as Begin Set Nocount On DEclare @str as varchar (200)

    print char(@Password); select * from Usertab where UserId=@UserId And [Password]=@Password; set @str = 'select * from Usertab where UId=@UId And [Password]"'+'"@Password'; print @str; End


    set 那行改成set @str = 'select * from UserInfo where  UId='+@UId +' And  [Password]='+@Password;也是一樣
    2016年2月24日 上午 02:36