SQL SERVER SELECT 與 SET

SQL Server 中對已經定義的變量賦值的方式用兩種,分別是 SET 和 SELECT。
對於這兩種方式的區別,SQL Server 聯機叢書中已經有詳細的說明,但很多時候我們
並沒有注意,其實這兩種方式還是有很多差別的。
SQL Server推薦使用 SET 而不是 SELECT 對變量進行賦值。
當表達式返回一個值並對一個變量進行賦值時,推薦使用 SET 方法。
下表列出 SET 與 SELECT 的區別。請特別注意紅色部分。 

set select
同時對多個變量同時賦值 不支持 支持(如:select   @a=1,@b=2,@c=3 )
表達式返回多個值時 出錯 將返回的最後一個值賦給變量
表達式未返回值 變量被賦null值 變量保持原值

下面以具體示例來說明問題:

create table chinadba1(
userid int ,
addr varchar(128)
)
go
insert into chinadba1(userid,addr) values(1,’addr1′)
insert into chinadba1(userid,addr) values(2,’addr2′)
insert into chinadba1(userid,addr) values(3,’addr3′)
go

表達式返回多個值時,使用 SET 賦值

declare @addr varchar(128)
set @addr = (select addr from chinadba1)
/*
–出錯信息為
服務器: 消息 512,級別 16,狀態 1,行 2
子查詢返回的值多於一個。當子查詢跟隨在 =、!=、<、<=、>、>= 之後,或子查詢用作表達式時,這種情況是不允許的。
*/
go

表達式返回多個值時,使用 SELECT 賦值

declare @addr varchar(128)
select @addr = addr from chinadba1
print @addr –結果集中最後一個 addr 列的值
–結果: addr3
go

表達式未返回值時,使用 SET 賦值

declare @addr varchar(128)
set @addr = ‘初始值’
set @addr = (select addr from chinadba1 where userid = 4 )
print @addr –null值
go

表達式未返回值時,使用 SELECT 賦值

declare @addr varchar(128)
set @addr = ‘初始值’
select @addr = addr from chinadba1 where userid = 4
print @addr –保持原值
go

需要注意的是,SELECT 也可以將標量子查詢的值賦給變量,如果標量子查詢不返回值,則變量被置為 null 值。
此時與 使用 SET 賦值是完全相同的
對標量子查詢的概念大家應該都覺得陌生,舉個例子就能說明

declare @addr varchar(128)
set @addr = ‘初始值’
–select addr from chinadba1 where userid = 4 為標量子查詢語句
select @addr = (select addr from chinadba1 where userid = 4)
print @addr –null值
go

原文地址 http://blog.chinaunix.net/u/25096/showart_375538.html

如何讓用不到的專案不再出現在 VS2003/2005/VS2008 的啟始頁

原文網址

這是每個人都很可能遇到的情況,那就是你建立了一個專案,然後你將它搬動、刪除或重新命名了,但是舊的名字卻一直出現在啟始頁的「最近使用的專案」窗格裡,無從刪除。

這個問題從 VS2002 一直到 VS2008 都存在。雖然不會引起什麼問題,但對於部份習慣從該窗格選取專案的人來講,卻是一個討人厭的問題。

解決的方法很簡單,請開啟登錄編輯程式,從 HKCU/Software/Microsoft/VisualStudio/x.0/ProjectMRUList 中把不要的項目刪除就可以了。

對於 VS2002/2003 的使用者,則可以找 HKCU/Software/Microsoft/VisualStudio/7.1/ProjectMRUList, VS2008 則是 HKCU/Software/Microsoft/VisualStudio/9.0/ProjectMRUList

到了 VS2010,什麼都不必做,因為在啟始頁中就可以直接 remove 掉了。

快速取得資料庫資料表結構

select t.name as [table name], c.name AS [column name], tp.name AS [資料型別],
  case tp.name
  when 'bigint' then cast(c.precision as varchar(3))
  when 'int' then cast(c.precision as varchar(3))
  when 'smallint' then cast(c.precision as varchar(3))
  when 'tinyint' then cast(c.precision as varchar(3))
  when 'numeric' then '(' + cast(c.precision as varchar(3)) + ',' + cast(c.scale as varchar(3)) + ')'
  when 'decimal' then '(' + cast(c.precision as varchar(3)) + ',' + cast(c.scale as varchar(3)) + ')'
  when 'nvarchar' then cast((c.max_length/2) as varchar(5))
  when 'nchar' then cast((c.max_length/2) as varchar(5))
  else cast(c.max_length as varchar(5))
  end as [長度],
  CASE WHEN c.is_nullable=1 THEN 'ok' ELSE 'no' END AS [NULL ok],
  ep.value as [描述] 
from sys.tables as t
inner join sys.columns as c on t.object_id=c.object_id
inner join sys.types as tp on c.system_type_id = tp.system_type_id
left outer join sys.extended_properties as ep on (ep.major_id = t.object_id
and ep.minor_id = c.column_id and ep.class = 1 )
where tp.system_type_id = tp.user_type_id 
order by t.name,c.name

 

DIA – Visio like Freeware

DIA – Visio like Freeware

DIA
Dia是開放源碼的流程圖軟體 link
官網 Official web site link

Visio file 轉換
Dia 無法直接開啟 “.VSD” 檔, 必須使用 Visio 2002 及以上版本將 “.VSD” 檔案另存為格式 save as Visio XML Drawing file “.VDX” , 即可由 DIA 開啟修改.

Dia 如果必須輸出為 .VDX file 供轉給 Visio 使用必須使用 “匯出” 功能.

安裝 DIA 時語文只有簡體中文, 請選 English , 安奘後起動會自動顯示為繁體中文.

SQL 執行批次檔指令

要透過SQL執行批次檔的動作一定要該帳號權限允許,以及SQL SERVER有開啟該程序。

其執行語法為:

EXEC master.dbo.xp_cmdshell ‘C:\TEST.bat’

 

其中要注意的一點是,語法中的 C:\TEST.bat 是指 SQL SERVER 那台主機上的目錄。

 

開啟該權限的語法:

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

EXEC sp_configure ‘xp_cmdshell’, 1;

RECONFIGURE;

 

關閉該權限的語法

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

EXEC sp_configure ‘xp_cmdshell’, 0;

RECONFIGURE;

Register / Unregister 註冊 / 反註冊 ActiveX DLL / OCX 元件

Register / Unregister 註冊 / 反註冊 ActiveX DLL / OCX 元件 — 程式設計師不可或缺的小技巧

簡單的範例
要手工註冊「E:\Timer.Dll」,只需在「開始→運行」中鍵入「Regsvr32 E:\Timer.Dll」,單擊「確定」按鈕後會彈出提示信息「DllRegisterServer in Timer.Dll succeeded」,說明組件註冊成功;如果要卸載此組件,在「開始→運行」中鍵入「Regsvr32 /u E:\Timer.Dll」即可。若是不想讓訊息出現則輸入「Regsvr32 /u /s E:\Timer.Dll」

格式:regsvr32 [/s] [/n] [/i[:cmdline]] DLLname
使用參數[/u]——–解除服務器註冊
使用參數[/s]——–無訊息;不顯示消息框
使用參數[/i]———調用DllInstall,給其傳遞一個可選[cmdline];跟/u參數一起使用時卸載DLL。
使用參數[/n]——–不用調用DLLRegisterServer。這個參數必須跟/i一起使用。

CodeIgniter

最近備受打擊的我覺得找個程式來寫寫,於是就把腦筯動到作了一半的”難笑網”身上,
本來是用.NET開發的,但考量到有個現成的PHP環境,
決定了@@ 改版為PHP!!

GOOGLE一致認為CodeIgniter是最適合新手入門的framework

是我熱愛的MVC架構,網路教學文章也蠻多的,看來值得一學。