Parameter name not found
은 데이터베이스 드라이버의 오류 여야합니다. 전체 예외 추적 없이는 확신 할 수 없지만 DevArt는 매개 변수를 설정하기 전에 SQL 텍스트를 설정해야한다고 생각합니다.
Command = new Devart.Data.PostgreSql.PgSqlCommand();
Command.CommandText = "SELECT ...."; /* or whatever your SQL is */
Command.Parameters.AddWithValue("@TestName", testmaster.TestName);
Command.Parameters.AddWithValue("@TestShortName", testmaster.TestShortName);
는 (나는 단지 그들이 오라클 매개 변수를 참조하면서
the examples in some of the docs에 의해거야, 그것을 사용하지 않은 기초에 대해 같은 많은 것 같다.)
그러나, 그것은 또한입니다 DevArt가 DO
블록과 $$
블록을 구문 분석 할 수 없습니다. 이 작동하는 경우
Command = new Devart.Data.PostgreSql.PgSqlCommand();
Command.Parameters.AddWithValue("@TestName", testmaster.TestName);
Command.Parameters.AddWithValue("@TestShortName", testmaster.TestShortName);
Command.CommandText = "Insert into \"TestMaster\"(\"TestName\", \"TestShortName\", \"RCUID\", \"RCDate\", \"RCTime\") values (:TestName, :TestShortName, 0, CURRENT_DATE, CURRENT_TIME(0)) RETURNING \"TestID\" INTO newTestID;";
을하지만, DevArt 매개 변수를 찾을 수에 따옴표 DO
블록 또는 $$
을 구문 분석 할 수 있기 때문에 DO
블록의 버전은, 그것은 아마하지 않습니다 사항을 확인하기 위해 시도합니다.
대신 SQL 함수를 사용해야 할 수도 있습니다 (첫 번째 명령문 이후에 더 많은 작업을 수행하려는 경우 DO
블록을 전혀 사용하지 않을 것입니다). 그런 다음 별도의 명령문에서 함수를 호출하십시오. 예 : 첫 번째 매개 변수없이이 SQL을 실행
CREATE OR REPLACE FUNCTION myfunc(testname text, testshortname text) returns void AS $$
DECLARE
newTestID INT;
BEGIN
INSERT into "TestMaster"("TestName", "TestShortName", "RCUID", "RCDate", "RCTime")
VALUES (testname, testshortname, 0, CURRENT_DATE, CURRENT_TIME(0))
RETURNING TestID INTO newTestID;
-- whatever you want to do with newTestID here
END$$;
는 실행 다른 문처럼 함수를 호출 :
Command = new Devart.Data.PostgreSql.PgSqlCommand();
Command.CommandText = "SELECT myfunc(:TestName, :TestShortName)";
Command.Parameters.AddWithValue("@TestName", testmaster.TestName);
Command.Parameters.AddWithValue("@TestShortName", testmaster.TestShortName);
이 호출 할 수 있습니다.
계속 유지하고 재사용하지 않으려면 DROP FUNCTION
을 입력해야합니다. 따라서 을 입력해야합니다.
* 전체 * 오류 메시지가 확실합니까? 전체 오류/예외를 복사하여 붙여 넣으십시오. –
전체 예외입니다. 다른 세부 사항은 나와 동일하지 않습니다. –
내 편집을 확인하십시오. 명령을 내릴 때 오류가 삽입 명령에 없습니다. –