none
sqlcommand 使用 T-SQL語法 RRS feed

  • 問題

  • 您好:

              想請問一下,我在vb.net 2008中的sqlcommand使用T-SQL語法,
    而不是使用一般的SQL語法,有什麼不一樣呢?如在空行及串接程式上有什麼要注意的呢?
    謝謝
    2009年8月26日 上午 02:46

解答

所有回覆

  • 可參考 MSDN 中

    Transact-SQL 語法慣例 (Transact-SQL)
    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    • 已標示為解答 Lolota Lee 2009年9月2日 上午 07:03
    2009年8月26日 上午 02:56
    版主
  • 因為你連的叫 Microsoft SQL Server,  所以用 T-SQL, 如果你是連接 Oracle 就要用PL/SQL,
    就像C語言, 有ANSI C的語法, 有各家自行附加發揮的Turbo C, Microsoft C .......這些東西雖有大同,仍存小異
    這邊有一個維基百科關於 T-SQl的解釋 http://zh.wikipedia.org/wiki/Transact-SQL

    請關心自己的問題,不要問了就放空;這是對別人與自己的尊重。如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    2009年8月26日 上午 03:48
    版主
  • 基本上各家都會 follow ANSI SQL-92 的標準,但是各家還會針對 DBMS 的特性做強化,並加入一堆新的功能以顯露出它的能力。
    不過這會導致相容性的問題 ...


    小人物一枚。
    2009年8月26日 上午 04:09
    版主
  • 謝謝各位,我正繼續努力,但在空行上還是有問題,不知道是不是要加入什麼分隔符號,如…

    Dim sqlStatement As String = _
                "USE master;" & vbCrLf & _
                "GO " & vbCrLf & _
                "DECLARE @nvcCmd nvarchar(max), @nvcDBName nvarchar(100), @iLoop int, @cNo char(4); " & _
                "SET @iLoop = 1 " & _
                "WHILE (@iLoop <= 2) " & _
                "BEGIN " & _
                "SELECT @cNo = " & _
                "CASE Len(@iLoop) " & _
                "WHEN 1 THEN '000' + CAST(@iLoop AS varchar(4)) " & _
                "WHEN 2 THEN '00' + CAST(@iLoop AS varchar(4)) " & _
                "WHEN 3 THEN '0' + CAST(@iLoop AS varchar(4)) " & _
                "ELSE CAST(@iLoop AS varchar(4)) " & _
                "End " & _
                "SET @nvcDBName = 'HB' + @cNo " & _
                "SET @nvcCmd = 'RESTORE DATABASE ' + @nvcDBName + " & _
                "'FROM DISK = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Health_001.bak'' ' + " & _
                "'WITH MOVE ''Health_001'' TO ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\' + " & _
                " @nvcDBName + '.mdf'', ' + " & _
                "'MOVE ''Health_001_Log'' TO ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\' + " & _
                " @nvcDBName + '.ldf''' " & _
                "EXEC (@nvcCmd) " & _
                "SET @iLoop = @iLoop + 1 " & _
                "END " & vbCrLf & _
                "GO"

    會出現錯誤訊息:
    訊息 102,層級 15,狀態 1,行 1
    接近 'GO' 之處的語法不正確。
    訊息 102,層級 15,狀態 1,行 1
    接近 'GO' 之處的語法不正確。


    不知道是哪裡出錯了呢?麻煩各位,謝謝。
    2009年8月27日 上午 02:15
  • 一次 SQL 指令只能跑一個指令,而且不可以在裡面加 GO,這是限制。
    以上的指令要分批跑。


    小人物一枚。
    2009年8月27日 上午 02:52
    版主