正常查詢中使用VB6和SQL Server 2000使從存儲過程
我想在存儲過程轉換爲普通查詢
存儲過程:
Alter PROC [dbo].[proc_New]
@CCODE VARCHAR(100),
@EmpCode VARCHAR(100)
AS
BEGIN
DECLARE @ID VARCHAR (5)
DECLARE @Des VARCHAR(10)
DECLARE @SQL VARCHAR(1000)
DECLARE @Flag INT
SELECT @Flag=0
SELECT @SQL = 'SELECT PERSONID FROM T_PERSON WHERE '
IF @CCODE<>'All'
BEGIN
IF @Flag=1
BEGIN
SELECT @SQL = @SQL+' AND (CCODE IN ('''[email protected]+'''))'
END
ELSE
BEGIN
SELECT @SQL = @SQL+' (CCODE IN ('''[email protected]+'''))'
SELECT @Flag=1
END
END
IF @EMPCODE<>'All'
BEGIN
IF @Flag=1
BEGIN
SELECT @SQL = @SQL+' AND (EMPCODE IN ('''[email protected]+'''))'
END
ELSE
BEGIN
SELECT @SQL = @SQL+' (EMPCODE IN ('''[email protected]+'''))'
SELECT @Flag=1
END
END
IF @SQL = 'SELECT EmpCode FROM EMPMST WHERE ' SELECT @SQL = 'SELECT EmpCode FROM EMPMST'
INSERT INTO table EXEC(@SQL)
GO
步驟解釋...
我傳遞了2個參數值,如emp_code或All和company_code o r全部。
在第一個參數(
Emp_Code
):如果該值是「全部」是指則查詢返回的所有emp_code
或者如果值是「001」,然後查詢返回「001」emp_code
只有在第二個參數(
Company_Code
)中:如果值爲「全部」則表示然後查詢返回所有公司的所有emp_code
(例如:IBM,SoftTech等)或者如果值爲「IBM」則表示然後查詢返回所有emp_code
該公司(IBM)
上面的存儲過程工作正常,但我想轉換爲正常查詢。
任何人可以幫助我
需要查詢幫助
你什麼意思通過正常的查詢做?非動態? –
提示:您可以更改基本查詢以包含WHERE 1 = 1,那麼無論您是否添加了一些「AND」,您都將擁有正確的語法。然後你可以刪除'@ Flag'和最後一個'IF'。 –
你的查詢實際上在做什麼或者你想要實現什麼樣的查詢?所以我們可以考慮替代查詢 –