Hi,
if I execute the following script in SQL Management Studio (SQLServer
2005), then it works. But
when I use my ODBC application it fails.
Is there anything wrong with the script when using ODBC ?
Thanks a lot,
Lothar
CREATE PROCEDURE lbDMF_DropConstraint @Table VARCHAR(50), @Name
VARCHAR(50)
AS
BEGIN
DECLARE @Statement1 VARCHAR(200)
DECLARE hSqlProc CURSOR LOCAL FOR
SELECT 'ALTER TABLE ' + @Table + ' DROP CONSTRAINT ' +
pr.name
FROM sysobjects pr
WHERE pr.xtype IN ('F') AND upper(pr.name) =
upper(@Name)
OPEN hSqlProc
FETCH hSqlProc INTO @Statement1
WHILE (@@fetch_status = 0)
BEGIN
EXECUTE (@Statement1)
FETCH hSqlProc INTO @Statement1
END
CLOSE hSqlProc
DEALLOCATE hSqlProc
END;
CREATE PROCEDURE lbDMF_DropTable @Table VARCHAR(50)
AS
BEGIN
DECLARE @Statement2 VARCHAR(200)
DECLARE hSqlProc CURSOR LOCAL FOR
SELECT 'DROP TABLE ' + pr.name
FROM sysobjects pr
WHERE pr.xtype IN ('U') AND upper(pr.name) =
upper(@Table)
OPEN hSqlProc
FETCH hSqlProc INTO @Statement2
WHILE (@@fetch_status = 0)
BEGIN
EXECUTE (@Statement2)
FETCH hSqlProc INTO @Statement2
END
CLOSE hSqlProc
DEALLOCATE hSqlProc
END;
CREATE PROCEDURE lbDMF_DropProc @Name VARCHAR(50)
AS
BEGIN
DECLARE @Statement3 VARCHAR(200)
DECLARE hSqlProc CURSOR LOCAL FOR
SELECT 'DROP ' + case pr.xtype when
'P' then 'PROCEDURE ' else 'FUNCTION ' end +
pr.name
FROM sysobjects pr
WHERE pr.xtype IN ('P','FN','TF') AND upper(pr.name) =
upper(@Name)
OPEN hSqlProc
FETCH hSqlProc INTO @Statement3
WHILE (@@fetch_status = 0)
BEGIN
EXECUTE (@Statement3)
FETCH hSqlProc INTO @Statement3
END
CLOSE hSqlProc
DEALLOCATE hSqlProc
END;
-- Association TestSteps -> TestStepsDetail
exec lbDMF_DropConstraint 'TestStepsDetail',
'fk_TestStepsDetail_TestSteps_ID';
-- Class is TestStepsMSSQL
exec lbDMF_DropTable 'TestSteps';
CREATE TABLE "TestSteps" (
"ID" INTEGER IDENTITY (1, 1) NOT NULL,
PRIMARY KEY ("ID"),
"Spalte1" CHAR(100)
);
-- Class is TestStepsDetailMSSQL
exec lbDMF_DropTable 'TestStepsDetail';
CREATE TABLE "TestStepsDetail" (
"ID" INTEGER IDENTITY (1, 1) NOT NULL,
PRIMARY KEY ("ID"),
"Spalte1" CHAR(100)
);
-- Association TestStepsDetail -> TestSteps with name ''
ALTER TABLE "TestStepsDetail" ADD "TestSteps" INT;
ALTER TABLE "TestStepsDetail" ADD CONSTRAINT
"fk_TestStepsDetail_TestSteps_ID" FOREIGN KEY ( "TestSteps" )
REFERENCES "TestSteps" ( "ID" );
exec lbDMF_DropProc 'lbDMF_DropTable';
exec lbDMF_DropProc 'lbDMF_DropConstraint';
exec lbDMF_DropProc 'lbDMF_DropProc';
This are the errors after executing the script in my application:
lbDB.cpp, 3884: Error in lbQuery: (SQLExecDirect()) 42000: 156 -
[Microsoft][ODB
C SQL Server Driver][SQL Server]Falsche Syntax in der N©¥he des
'PROCEDURE'-Schl¡Ã
sselwortes.
lbDB.cpp, 3884: Error in lbQuery: (SQLExecDirect()) 42000: 156 -
[Microsoft][ODB
C SQL Server Driver][SQL Server]Falsche Syntax in der N©¥he des
'PROCEDURE'-Schl¡Ã
sselwortes.
>> Stay informed about: SQL script does not run within my ODBC session ?