Sql-Server-2000

在這種情況下不允許子查詢。只允許標量表達式

  • March 8, 2014

我的客戶正在執行 MS SQL Server 2000。我完成了一個項目,但我沒有意識到 MS SQL Server 2000 不允許在值中進行選擇,因此出現錯誤:

Subqueries are not allowed in this context. Only scalar expressions are allowed.

insert into table_one (greeting_column, name_column)
values (
        'hello',
        (select column_1 from table_to where name = 'bob')
      )

我從coldfusion10 呼叫這個查詢。我已經實現了一個利用coldFusion10解決這個問題的解決方案,方法是替換呼叫查詢的select語句並將結果儲存在coldFusion列表變數中,然後遍歷一個循環,將CF列表變數的內容插入到其各自的記錄中,但是這需要比簡單的 SQL 語句更多的處理。我找到了這樣的解決方案:

CREATE PROC whatever
@REC int,
@ChangedIP varchar(15),
@ChangedBY varchar(30)
AS
INSERT INTO table_LOG
SELECT *, GETDATE(), @ChangedID, @ChangedBy FROM table WHERE record = @REC

但我不認為 ColdFusion 會在查詢中允許這樣做(將在周末後嘗試)有沒有辦法重寫不使用 Transact-SQL 變數?

您可以改用此程式碼 - 只需使用SELECT來提供值,包括固定文字:

INSERT INTO dbo.table_one (greeting_column, name_column)
  SELECT
     'hello', column_1 
  FROM 
     dbo.table_to 
  WHERE 
     name = 'bob'

您不能混合為 an 提供值VALUES()的方法和方法- 您可以為值列表提供文字和 SQL 變數- 或者您需要使用SELECT``INSERT``VALUES(.....)``SELECT

引用自:https://dba.stackexchange.com/questions/60482