无基础者求助

xiao_shui_di 2008-06-26 04:26:24
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[yinlian]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
这几句代码我基本明白,就是不明白where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1是什么意思,尤其是N'[dbo].[yinlian]',为什么用N呢?请不吝赐教。
...全文
98 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao_shui_di 2008-06-26
  • 打赏
  • 举报
回复
哦 ,看到了九楼的回答,觉得似乎明白了,谢谢,谢谢大家!
xiao_shui_di 2008-06-26
  • 打赏
  • 举报
回复
那么object_id又是什么意思呢?
对于这句话我的理解是:从系统数据库的sysobjects表中取出符合条件的所有列,如果存在符合条件的纪录(也就是select的结果为true),那么就删除存储过程[yinlian],可就是看不懂条件的含义。
看了各位的解答,我想条件的含义是否就是“如果它是一个存储过程并且系统的字段ID=[yinlian]的object_id”呢?
utpcb 2008-06-26
  • 打赏
  • 举报
回复
where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1是

N主要表示的使用unioncode,一种编码方式
[dbo].[yinlian],dbo所有者,[yinlian]表示数据库的对象
lff642 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiao_shui_di 的帖子:]
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[yinlian]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
这几句代码我基本明白,就是不明白where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1是什么意思,尤其是N'[dbo].[yinlian]',为什么用N呢?请不吝赐教。
[/Quote]

1.整体的意思是判断yinlian存储过程是否存在,存在的话.把它删除.
2.object_id(N'[dbo].[yinlian]')这里object_id()是返回数据库对象标识号。也是SYSOBJECTS的ID
对象前加个N的话.代表unioncode
3.OBJECTPROPERTY()是返回当前数据库中对象的有关信息。
语法:
语法
OBJECTPROPERTY ( id , property )

参数
id

一个表达式,包含当前数据库中某个对象的 ID。id 的数据类型是 int。

Property

一个表达式,包含针对由 id 指定的对象将要返回的信息。Property 可以是下面这些值中的一个。

也是判断yinlian这个对象是否是存储过程.
SQLnewlearner 2008-06-26
  • 打赏
  • 举报
回复
风师兄同台湾同胞?用繁体字。。。
中国风 2008-06-26
  • 打赏
  • 举报
回复
若某個資料庫中以多種語言儲存資料,則當您只使用字元資料和字碼頁時會使得管理更加困難。同時,也不容易針對可以儲存所有需要之語言特定字元的資料庫尋找某個字碼頁。此外,當執行各種字碼頁的不同用戶端讀取或更新特殊字元時,很難保證這些特殊字元能有正確的翻譯。支援國際用戶端的資料庫應該一律使用 Unicode 資料類型,而不使用非 Unicode 資料類型。

例如,考慮處理北美地區顧客的資料庫必須處理三種主要語言:

墨西哥的西班牙文姓名與地址


魁北克的法文姓名與地址


加拿大其他地區與美國的英文姓名與地址


只使用字元資料行與字碼頁時,必須小心確定安裝資料庫時,使用了可以處理這三種語言字元的字碼頁。您也必須小心確保由執行不同語言字碼頁的用戶端讀取資料時,會正確地翻譯其中一種語言的字元。

隨著網際網路的成長,要支援執行不同地區設定的許多用戶端電腦變得前所未有的重要。要對支援全球用戶需要的所有字元,選取字元資料類型的字碼頁則相當困難。

管理國際性資料庫中字元資料最簡單方法是一律使用 Unicode nchar、nvarchar 與 ntext 資料類別,取代非 Unicode 相等的 char、varchar 與 text。

Unicode 是將字碼指標對應到字元的標準用法。由於 Unicode 主要設計為涵蓋世界上所有語言的字元,因此不需要使用不同的字碼頁來處理不同的字元集。SQL Server 2005 支援 Unicode Standard 3.2 版。

如果處理國際性資料庫的所有應用程式也都使用 Unicode 變數,而不是非 Unicode 變數,系統的任何位置就都不必執行字元轉換。用戶端在資料中看到的字元,會和所有其他用戶端看到的一樣。

SQL Server 2005 將所有文字的系統目錄資料儲存在具有 Unicode 資料類型的資料行中。資料庫物件 (如資料表、檢視與預存程序) 的名稱都會儲存在 Unicode 資料行中。這樣就可以只使用 Unicode 開發應用程式,避免所有字碼頁轉換的問題。
lgxyz 2008-06-26
  • 打赏
  • 举报
回复
合起来就是
这个存储过程是否存在
lgxyz 2008-06-26
  • 打赏
  • 举报
回复

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yinlian]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1

前面判断说这个对象有没有存在
and后面是说这个对象是“存储过程”
  • 打赏
  • 举报
回复
where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1

判断yinlian这个存储过程是否存在
  • 打赏
  • 举报
回复
where id = object_id(N'[dbo].[yinlian]') and OBJECTPROPERTY(id, N'IsProcedure') = 1是

N主要表示的使用unioncode,一种编码方式
[dbo].[yinlian],dbo所有者,[yinlian]表示数据库的对象
中国风 2008-06-26
  • 打赏
  • 举报
回复
N--unicode
nvarchar
liangCK 2008-06-26
  • 打赏
  • 举报
回复
其实没啥意思的..可以甭管..

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧