顯示具有 Store Procedure 標籤的文章。 顯示所有文章
顯示具有 Store Procedure 標籤的文章。 顯示所有文章

如何新增資料表中有Identity欄位

2013年10月7日 星期一

在補資料時當遇到Identity欄位時,會發生以下錯誤:

訊息 544,層級 16,狀態 1,行 1
當 IDENTITY_INSERT 設為 OFF 時,無法將外顯值插入資料表 'bt_test' 的識別欄位中。

 

用以下方法則可解決

 

 

Create Procedure spx_identityinsert
(
@dbName VARCHAR(100),
@schemaName varchar(100),
@tableName VARCHAR(100),
@insertSql Varchar(MAX)
)
AS
BEGIN

Declare @sql varchar(MAX)
if(OBJECTPROPERTY(OBJECT_ID(@dbName +'.'+@schemaName +'.'+@tableName ,'U'),'TableHasIdentity') > 0)
Begin
Set @sql = 'SET IDENTITY_INSERT ' + @dbName+'.'+@schemaName+'.'+@tableName+ ' ON;'
Set @sql = @s + @insertSql
Set @sql = @s + 'SET IDENTITY_INSERT ' + @dbName+'.'+@schemaName+'.'+@tableName+ ' OFF;'
Execute(@sql)
End

END
Go;

/*執行範例:*/
Exec usp_identityinsert 'MyTestDB','dbo','bt_test','Insert into tb_test (id,name) values (9,''neil'')' /*塞字串要跳脫字元*/

Read more...

Store Procedure 執行錯誤

2012年8月23日 星期四


今天遇到使用Oracle Store Procedrure會出現錯誤,但在Oracle SQL Developer管理工具執行是ok的,

在測試 Store Procedure過程中,遇到以下的錯誤訊息:
(1)ORA-01036: 變數名稱?號碼無效,因為參數前面多加一個@符號的緣故 oracle_command.Parameters.Add("@return_value", OracleType.VarChar, 3)
   解決之道:針對 SQL Server資料庫,執行預存程序時,參數前面要多加一個@符號,但 Oracle卻不需要,因此將@符號刪除,即可解決。

(2)ORA-06550: 第 1 行, 第 7 個欄位:
    PLS-00201: 識別字 'test_proc' 必須被宣告
    ORA-06550: 第 1 行, 第 7 個欄位:
    PL/SQL: Statement ignored
   解決之道:
   1. 賦予使用者有執行 test_proc預存程序的權限。
   2. 如果使用 test帳號建立 test_proc預存程序,而執行 test_proc預存程序的帳號為 test2,則 oracle_command.CommandText的內容要由 test_proc變成 test.test_proc。

參考來源:
http://blog.xuite.net/sugopili/computerblog/26446766-Oracle+%EF%BC%8D+Store+Procedure%E5%85%A5%E9%96%80

Read more...