ALTER 新增欄位錯誤...MSSQL 有限制嗎? 請教..謝謝. |
答題得分者是:l630521
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
D5, MSSQL7
我建立加入中文欄位名稱如 版本控制 版本1.1 版本1.2 .......
用程式去動態建立 "版本控制" ===>> OK
但是只要碰到含有數字的 如 "版本1.1" 就無法新增欄位
可是我將程式指令輸出.直接於 SQL_W 執行 新增 "版本1.1" 就OK
如下
ALTER TABLE VER_CONTROL ADD "版本1.1" Int NULL DEFAULT(0),"版本1.2" int NULL DEFAULT(0) 請教我哪裡錯了?或是哪裡漏了?或是 MSQL Server 需要去設定?
謝謝..
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
StrongLemon
高階會員 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
l630521
資深會員 發表:15 回覆:349 積分:372 註冊:2003-02-17 發送簡訊給我 |
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
不好意思
我用TQuery & TDataBase
程式如下 SQL_MESS :='CREATE TABLE VER_CONTROL (版本 char12)) CREATE UNIQUE CLUSTERED INDEX [VER_CONTRO] ON VER_CONTROL (版本) WITH IGNORE_DUP_KEY';
Edit1.Text :=SQL_MESS; //===>>SQL輸出指令監視用
Query1.SQL.Clear;
Query1.SQL.Add(SQL_MESS);
Query1.Prepare;
Query1.ExecSQL ;
//以上沒問題 SQL_MESS :='ALTER TABLE VER_CONTROL ADD "版本1.1" Int NULL DEFAULT(0),"版本1.2" int NULL DEFAULT(0)';
Edit1.Text :=SQL_MESS;
Query1.SQL.Clear;
Query1.SQL.Add(SQL_MESS);
Query1.Prepare;
Query1.ExecSQL ;
end;
錯誤如下
但是我把Edit1.Text內整段複製至SQL_W 執行是成功的
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
MSSQL 7 欄位可以有'.'
但我又發現問題了
我先手動加入欄位'版本1.1' ,'版本1.2' .... 但是在 SQL_W 卻無法用以前的方式 指定欄位讀取 Select * from VER_CONTROL ===>>正常
Select 版本1.1 from VER_CONTROL ===>>錯誤
Select "版本1.1" from VER_CONTROL ===>>錯誤
Select '版本1.1' from VER_CONTROL ===>>正常 那我啟不是在Delphi裡 要改變我以往的讀取方式? 不好意思.再說明一下我的OS
D5,SQL2000 Client 讀取 SQL7 Server
|
l630521
資深會員 發表:15 回覆:349 積分:372 註冊:2003-02-17 發送簡訊給我 |
SQL_MESS :='ALTER TABLE VER_CONTROL ADD [版本1.1] Int NULL DEFAULT(0),[版本1.2] int NULL DEFAULT(0)'; Edit1.Text :=SQL_MESS; Query1.SQL.Clear; Query1.SQL.Add(SQL_MESS); Query1.Prepare; Query1.ExecSQL ;試試看!我有用過你 ALTER TABLE VER_CONTROL ADD "版本1.1" Int NULL DEFAULT(0),"版本1.2" int NULL DEFAULT(0)的語法試,用雙引號正常,單引號則會產生錯誤,你參考看看! Ian |
StrongLemon
高階會員 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言:l630521已經回答了.. 目前是強烈建議欄位&Table都包[].. 尤其是如果很不幸地用到關鍵字(在Access跟Oracle都碰到過)SQL_MESS :='ALTER TABLE VER_CONTROL ADD [版本1.1] Int NULL DEFAULT(0),[版本1.2] int NULL DEFAULT(0)'; Edit1.Text :=SQL_MESS; Query1.SQL.Clear; Query1.SQL.Add(SQL_MESS); Query1.Prepare; Query1.ExecSQL ;試試看!我有用過你 ALTER TABLE VER_CONTROL ADD "版本1.1" Int NULL DEFAULT(0),"版本1.2" int NULL DEFAULT(0)的語法試,用雙引號正常,單引號則會產生錯誤,你參考看看! Ian |
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
謝謝l630521 及 StrongLemon 兩位仁兄指導
我於程式裡 使用 單雙引 也皆會出現錯誤
況且程式裡也無法用單引號當String 我改用
CHR(39) == >> 單引號
CHR(34) == >> 雙引號
也都試過了,程式裡就是過不了 .一樣錯誤 現在我全部改用[ ]包起特定字元..就都沒事啦 是不是用程式去操作資料庫.都一定會有一些限制?
在資料庫直接可以執行的整串指令.不一定用程式就可以控制?
再來.可能又要改變以往Select 的習慣了
我馬上於SQL_QUERY 試
Select * from VER_CONTROL ===>>正常
Select 版本1.1 from VER_CONTROL ===>>錯誤
Select "版本1.1" from VER_CONTROL ===>>錯誤
Select '版本1.1' from VER_CONTROL ===>>正常
Select [版本1.1] from VER_CONTROL ===>>正常 因為單引號於程式裡又要另外指定為CHR(39)很麻煩
以後都要改變習慣了 . 謝謝先進不吝指導. PS:我是用程式下指令跟直接於SQL_QUERY上執行 來Debug的
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |