【发布时间】:2009-01-19 10:28:30
【问题描述】:
我在编译这段代码时遇到问题..谁能告诉我语法有什么问题
CREATE PROCEDURE spGenericInsert
(
@insValueStr nvarchar(200)
@tblName nvarchar(10)
)
AS
BEGIN
DECLARE @insQueryStr nvarchar(400)
DECLARE @insPrimaryKey nvarchar(10)
DECLARE @rowCountVal integer
DECLARE @prefix nvarchar(5)
IF @tblName='HW_Master_DB'
SET @rowCountVal=(SELECT COUNT(*) FROM HW_Master_DB)
ELSE IF @TableName='SW_Master_DB'
SET @rowCountVal=(SELECT COUNT(*) FROM SW_Master_DB)
ELSE IF @TableName='INV_Allocation_DB'
SET @rowCountVal=(SELECT COUNT(*) FROM INV_Allocation_DB)
ELSE IF @TableName='REQ_Master_DB'
SET @rowCountVal=(SELECT COUNT(*) FROM REQ_Master_DB)
IF @tblName = 'DEFECT_LOG'
SET @prefix='DEF_'
ELSE IF @tblName='INV_Allocation_DB'
SET @prefix='INV_'
ELSE IF @tblName='REQ_Master_DB'
SET @prefix='REQ_'
ELSE IF @tblName='SW_Master_DB'
SET @prefix='SWI_'
ELSE IF @tblName='HW_Master_DB'
SET @prefix='HWI_'
SET @insPrimaryKey= @prefix + RIGHT(replicate('0',5)+ convert(varchar(5),@rowCountVal),5) -- returns somethin like 'DEF_00005'
SET @insQueryStr= 'INSERT INTO ' + @tblName + ' VALUES (' + @insPrimaryKey + ',' + @insValueStr + ')'
EXEC(@insQueryStr)
END
我知道整数标识列.. 但我必须在表中使用 AlphaNumeric ID 在高度多用户的 Intranet 系统中插入新值。
记录不会从表中删除。所以问题是要保持记录的同步插入,并自动生成 ID 字段。
任何建议如何做到这一点。
【问题讨论】:
-
什么问题?你遇到了什么错误?在哪里?
-
您是否真的阅读尝试运行此程序时收到的错误消息?对我来说,这似乎是在没有任何关于 SQL 的任何线索的情况下将两个过程复制粘贴在一起的结果。需要最少的自己的努力,否则人们会被你的问题冒犯。
标签: sql-server visual-studio sql-server-2005 stored-procedures